我尝试了来自文档http://doc.scrapy.org/en/stable/topics/practices.html的示例,但是在第二次运行时,将出现一个可响应或不可启动的错误。
settings = get_project_settings()
runner = CrawlerRunner(settings=settings)
@defer.inlineCallbacks
def crawl():
yield runner.crawl(LatestNewsSpider)
reactor.stop()
def run_spider():
crawl()
reactor.run()
最佳答案
在芹菜设置中将CELERYD_MAX_TASKS_PER_CHILD
设置为1。这将在每个子进程中只运行一个任务,因此它在同一进程中不会多次启动反应器。
或者,你可以在一个线程中运行反应器,并且永远不要停止它。我不知道它能不能用。crochet可能有用。