Python 在Google云函数中运行一个Scrapy spider

Python 在Google云函数中运行一个Scrapy spider,python,scrapy,google-cloud-functions,Python,Scrapy,Google Cloud Functions,我目前正试图让scrapy在谷歌云功能中运行 from flask import escape from scrapy.crawler import CrawlerProcess from scrapy.utils.project import get_project_settings def hello_http(request): settings = get_project_settings() process = CrawlerProcess(settings)

我目前正试图让scrapy在谷歌云功能中运行

from flask import escape
from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings

def hello_http(request):
    settings = get_project_settings()

    process = CrawlerProcess(settings)
    process.crawl(BlogSpider)
    process.start()

    return 'Hello {}!'.format(escape("Word"))
这是可行的,但奇怪的是,并不是“一直”。 每隔一次,HTTP调用将返回一个错误,然后我可以读取堆栈驱动程序:
函数执行耗时509毫秒,完成状态为:“崩溃”

我检查了爬行器,甚至将其简化为不会失败的功能,例如:

import scrapy

class BlogSpider(scrapy.Spider):
    name = 'blogspider'
    start_urls = ['https://blog.scrapinghub.com']

    def parse(self, response):
        yield { 'id': 1 }
有人能给我解释一下发生了什么事吗

这可能是我达到的资源配额吗


代码似乎很好。一个可能的问题是设置文件位于main.py文件的子目录中。使用正确的文件夹路径加载文件

    settings_file_path = '<main_folder>.<sub_folder>.settings'  
    os.environ.setdefault('SCRAPY_SETTINGS_MODULE', settings_file_path)
    settings = get_project_settings()
    settings.setdict({
        'LOG_LEVEL': 'ERROR',
        'LOG_ENABLED': True,
    })
    process = CrawlerProcess(settings)
    process.crawl(BlogSpider)
    process.start()
    return 'OK'
设置文件路径=“…设置”
os.environ.setdefault('SCRAPY\u SETTINGS\u MODULE',SETTINGS\u file\u path)
设置=获取项目设置()
settings.setdict({
“日志级别”:“错误”,
“已启用日志”:True,
})
进程=爬网进程(设置)
进程爬网(BlogSpider)
process.start()
返回“OK”

这段代码似乎与我的google cloud功能配合使用。

我不知道第一个代码块与第二个代码块的关系。云功能在哪里使用
BlogSpider
?是的,对不起,这只是一个输入错误。我修复了它。我一直在试图重现您的问题,据我所知,函数第一次运行时,一切都按预期运行。再次执行该函数后,我可以看到以下错误:twisted.internet.error.ReactorNotRestartable。就我所知,这似乎不起作用,因为每个过程只有一个反应器,不能启动两次。我发现您可以尝试实现类似的功能。我希望它能帮助我找到这篇可能有用的文章:和。根据,当运行Scrapy crawl时,Scrapy在每个进程中运行一个spider。但是,Scrapy支持使用内部API在每个进程中运行多个spider@ChristopherRodriguezConde的解决方案让我走上了正确的道路。我在这里写到: