您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用Google Cloud Functions时ReactorNotRestartable出现刮擦

使用Google Cloud Functions时ReactorNotRestartable出现刮擦

认情况下,的异步性质scrapy无法与Cloud Functions一起很好地工作,因为我们需要一种阻止爬网的方法,以防止该函数过早返回,并防止该实例在进程终止之前被杀死。

相反,我们可以使用scrapydo阻塞方式来运行您现有的蜘蛛:

requirements.txt

scrapydo

main.py

import scrapy
import scrapydo

scrapydo.setup()


class MyItem(scrapy.Item):
    url = scrapy.Field()


class MySpider(scrapy.Spider):
    name = "example.com"
    allowed_domains = ["example.com"]
    start_urls = ["http://example.com/"]

    def parse(self, response):
        yield MyItem(url=response.url)


def run_single_crawl(data, context):
    results = scrapydo.run_spider(MySpider)

这也显示一个简单的示例,说明如何scrapy.Item从蜘蛛中产生一个或多个并从爬取中收集结果,如果不使用,这也将是一个挑战scrapydo

另外:请确保您已为项目启用结算。认情况下,Cloud Functions无法发出出站请求,并且搜寻器将成功执行,但不返回任何结果。

Go 2022/1/1 18:37:22 有366人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶