我尝试了来自文档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可能有用。

08-24 20:50