我用python scrapy库构建了一个爬虫程序。它在本地运行时工作完美可靠。我试图将它移植到AWS lambda(我已经对它进行了适当的打包)。然而,当我运行它时,进程并没有被阻止,而在爬网程序返回没有结果之前完成。在日志退出之前,我从日志中得到的最后几行:
2018-09-12 18:58:07 [scrapy.middleware] INFO: Enabled item pipelines:
[]
2018-09-12 18:58:07 [scrapy.core.engine] INFO: Spider opened
而通常我会得到关于被爬网页面的全部信息。我尝试过在启动爬网之后睡觉,安装钩针并添加其声明器,安装并使用this特定框架,听起来似乎解决了这个问题,但它也不起作用。在
我确定这是兰姆达不尊重废料阻塞的问题,但我不知道如何解决它。在
我遇到了同样的问题,并通过为
sqlite3
创建空模块来解决它,如下面的答案所述:https://stackoverflow.com/a/44532317/5441099。表面上,Scrapy导入sqlite3
,但并不一定使用它。Python3希望sqlite3
位于主机上,但是AWS Lambda机器没有。错误消息并不总是显示在日志中。在这意味着您可以通过切换到Python2或像我一样为
sqlite3
创建空模块来使其工作。在我运行爬虫程序的入口文件如下所示,它在使用Python3.6的Lambda上运行:
相关问题 更多 >
编程相关推荐