как задеплоить через scrapyd scrapy спайдер, используя CrawlerRunner (или CrawlerProcess)

из документации scrapy (https://docs.scrapy.org/en/latest/topics/practices.html#running-multiple-spiders-in-the-same-process) есть пример запуска последовательных спайдеров внутри одного python скрипта:

configure_logging()
runner = CrawlerRunner()

@defer.inlineCallbacks
def crawl():
    yield runner.crawl(MySpider1)
    yield runner.crawl(MySpider2)
    reactor.stop()

crawl()
reactor.run() # the script will block here until the last crawl call is finished

однако нигде не нашел решения для деплоя спайдера через scrapyd, так как, как я понял, под капотом scrapyd запускает спайдер scrapyproject (аналог команды scrapy crawl name_of_spider), а не отдельный скрипт и если запустить таким образом этот спайдер, то вылезет ошибка из twisted:

raise error.ReactorNotRestartable()
twisted.internet.error.ReactorNotRestartable

так как сам scrapyd запускает свой реактор под капотом + я из скрипта запускаю свой поэтому есть вопрос, как задеплоить спайдер такого формата через scrapyd? или более общий вопрос, как организовать последовательное выполнение спайдеров внутри одного спайдера (питон скрипта) через scrapyd?


Ответы (0 шт):