Я использовал Scrapy Cluster для решения проблемы и делюсь своим опытом:
Docker установка была сложной для меня, чтобы контролировать и отлаживать, поэтому я попробовал Cluster Quick-start, и он работал лучше .
В моем кластере доступно пять машин, и я использовал одну для размещения Apache Kafka, а также Zookeeper. Еще у меня был один для Redis DB. Важно убедиться, что эти машины доступны для внешнего доступа с тех, которые вы собираетесь использовать для пауков.
После того, как эти три компонента были правильно установлены и запущены, я установил требования Scrapy Cluster в python3. 6 среда. Затем я настроил файл локальных настроек с IP-адресами для хостов и убедился, что все онлайн- и офлайн-тесты пройдены.
Все настроено, я смог запустить первого паука (пример в официальной документации приводится ). Идея состоит в том, что вы создаете экземпляры для своего паука (вы можете, например, использовать tmux, чтобы открыть 10 разных терминалов windows и запустить по одному экземпляру на каждом). Когда вы загружаете Apache Kafka с URL-адресом для сканирования, он отправляется в очередь в Redis, где ваши экземпляры будут периодически искать новую страницу для сканирования.
Если ваш паук генерирует больше URL-адресов из тот, который вы прошли изначально, они возвращаются в Redis, чтобы их могли просканировать другие экземпляры. И вот где вы можете увидеть мощь этого дистрибутива.
После сканирования страницы результат отправляется в топи Kafka c.
Официальная документация огромен, и вы можете найти более подробную информацию об установке и настройке.