Реактор не перезапускается при запуске нескольких пауков - PullRequest
0 голосов
/ 28 февраля 2019

У меня возникли проблемы с запуском нескольких пауков подряд, и я не смог найти ответ, который решил бы мою проблему.

В моем проекте у меня есть несколько пауков, один из которых может работать самостоятельноно следующие будут зависеть от того, кто первым завершил работу программы, чтобы правильно работать.

Как я могу заставить одного паука бегать за другим?Я попытался сделать что-то вроде этого:

from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings
import excelMerger

process = CrawlerProcess(get_project_settings())

process.crawl('urlClothes_spider')
process.start()
process.crawl('clothes_spider')
process.start()
process.crawl('finalClothes_spider')
process.start()

Но после первого финиша я получаю ошибку реактора не запускается.

Я также попытался просто поставить .crawl один за другимно похоже, что таким образом порядок не соблюдается, поэтому программа не работает, что-то вроде этого

process.crawl('urlClothes_spider')
process.crawl('clothes_spider')
process.crawl('finalClothes_spider')

Есть идеи, как решить проблему?

1 Ответ

0 голосов
/ 28 февраля 2019

Вам необходимо следовать примеру последовательного выполнения в документации :

from twisted.internet import reactor, defer
from scrapy.crawler import CrawlerRunner
from scrapy.utils.project import get_project_settings

runner = CrawlerRunner(get_project_settings())

@defer.inlineCallbacks
def crawl():
    yield runner.crawl('urlClothes_spider')
    yield runner.crawl('clothes_spider')
    yield runner.crawl('finalClothes_spider')
    reactor.stop()

crawl()
reactor.run()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...