当前位置: 首页 > 面试题库 >

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

姚俊贤
2023-03-14
问题内容

我得到的twisted.internet.error.ReactorNotRestartable错误,当我执行下面的代码:

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()

    if result:
        break
    sleep(3)

第一次起作用,然后出现错误。我process每次都创建变量,这是什么问题?


问题答案:

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

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

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



 类似资料:
  • 问题内容: 因此,在JS工作了一段时间之后,我将回到Python的基础知识。我只是有些出乎我意料的事情。 我有以下代码: 然而,当我运行该脚本,或者输入或脚本只是不断循环和不来循环出来。 我很迷惑。 问题答案: 那是因为您的第二个条件只是一个string ,这始终是正确的。您需要添加到第二个条件:

  • 在下面的代码中,我试图提示用户输入一个数字,如果它小于1,则要求输入另一个正数。 在输入正数之前,它似乎一直在工作,但在给出正数后,程序将打印最终的错误消息。 输入正数后,如何阻止打印此错误消息?

  • 我在循环中输入name和num时出错,

  • 问题内容: 在下面的代码中,我希望循环在+ + =时立即退出。但是,使用语句进行测试表明它一直持续到循环完成为止。我尝试过,然后在语句集中进行设置,但这会导致无限循环。我认为使用然后设置可能有效,但也可以一直运行到循环结束为止。什么是最优雅,最快的退出方式?谢谢。 问题答案: 该循环将只匹配条件时,当控制返回到它,即循环完全执行。因此,这就是即使满足条件也不会立即退出程序的原因。 但是,如果条件没

  • 我需要对while或do循环进行编码,以确定用户输入的数字是否在特定范围内(30

  • 只要给定条件为真,Perl编程语言中的while循环语句就会重复执行目标语句。 语法 (Syntax) Perl编程语言中while循环的语法是 - while(condition) { statement(s); } 这里的statement(s)可以是单个陈述或一个陈述块。 condition可以是任何表达。 当条件为真时,循环迭代。 当条件变为假时,程序控制将立即传递到循环之后的行。