为了账号安全,请及时绑定邮箱和手机立即绑定

While循环中的ReactorNotRestartable错误出现刮擦

While循环中的ReactorNotRestartable错误出现刮擦

慕斯709654 2019-12-05 16:00:44
我得到的twisted.internet.error.ReactorNotRestartable错误,当我执行下面的代码:from time import sleepfrom scrapy import signalsfrom scrapy.crawler import CrawlerProcessfrom scrapy.utils.project import get_project_settingsfrom scrapy.xlib.pydispatch import dispatcherresult = Nonedef set_result(item):    result = itemwhile True:    process = CrawlerProcess(get_project_settings())    dispatcher.connect(set_result, signals.item_scraped)    process.crawl('my_spider')    process.start()    if result:        break    sleep(3)第一次起作用,然后出现错误。我process每次都创建变量,这是什么问题?
查看完整描述

3 回答

?
森栏

TA贡献1810条经验 获得超5个赞

默认情况下,CrawlerProcess的.start()将停止在所有爬虫完成它创建的扭曲反应器。


process.start(stop_after_crawl=False)如果process在每个迭代中创建,则应调用。


另一个选择是自己处理并使用Twisted反应堆CrawlerRunner。该文档有一个这样做的例子。


查看完整回答
反对 回复 2019-12-05
?
弑天下

TA贡献1818条经验 获得超7个赞

我能够像这样解决这个问题。process.start()应该只调用一次。


from time import sleep

from scrapy import signals

from scrapy.crawler import CrawlerProcess

from scrapy.utils.project import get_project_settings

from scrapy.xlib.pydispatch import dispatcher


result = None


def set_result(item):

    result = item


while True:

    process = CrawlerProcess(get_project_settings())

    dispatcher.connect(set_result, signals.item_scraped)


    process.crawl('my_spider')


process.start()


查看完整回答
反对 回复 2019-12-05
  • 3 回答
  • 0 关注
  • 1344 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信