从脚本多次运行Spider-ReactorNotRestartable

时间:2019-09-16 18:55:15

标签: python flask scrapy twisted

我需要根据用户从脚本请求运行同一蜘蛛多次。如果我只运行一次,它会很好地工作,但之后我得到twisted.internet.error.ReactorNotRestartable。这是我的代码:

from scrapy.crawler import CrawlerRunner
from crawlers.spiders import MySpider
from scrapy.utils.project import get_project_settings
from twisted.internet import reactor

def run_spider(params):

    runner = CrawlerRunner(get_project_settings())

    @defer.inlineCallbacks
    def crawl():
        yield runner.crawl(MySpider, params)
        reactor.stop()

    crawl()
    reactor.run()

if __name__ == "__main__":
    run_spider(param_1)

如果我在第一个之后运行run_spider(param_2),则会收到error.ReactorNotRestartable()错误。我见过在run_spider()函数内部使用带有蜘蛛的for循环的实现,但就我而言,要记住的重要一点是,自请求以来,我不知道用户要运行蜘蛛多少次来自API。

0 个答案:

没有答案