我正在使用scrapy对walmart的开放API进行API调用。一切都按预期运行,除了一个以JSON格式返回数十万个产品的信息。 json约为2GB,使用请求下载大约需要4分钟。我更改了以下设置以适应文件大小和下载时间,如下所示:
DOWNLOAD_TIMEOUT = 420
DOWNLOAD_MAXSIZE = 3200000000
# left download warn size unaltered just to get some feedback and see at what point the process was hanging
但由于某些原因,scrapy像这样挂起:
2017-03-15 20:34:23 [scrapy.core.downloader.handlers.http11] WARNING: Received more bytes than download warn size (33554432) in request <GET http://api.walmartlabs.com/v1/feeds/clearance?apiKey=XXXX>.
2017-03-15 20:34:47 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2017-03-15 20:35:47 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2017-03-15 20:36:47 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
^C2017-03-15 20:51:18 [scrapy.crawler] INFO: Received SIG_SETMASK, shutting down gracefully. Send again to force
^C2017-03-15 21:09:36 [scrapy.crawler] INFO: Received SIG_SETMASK twice, forcing unclean shutdown
如果您注意到上述情况,我会在下载大小警告后的前3分钟后停止获取INFO级别的stat记录,并且重复尝试关闭scrapy down不起作用,我最终不得不手动终止该进程(2次尝试在control-c没有做这个工作)。如果您注意到从下载大小警告到第一次关机尝试需要17分钟的时间戳。然而,下载超时限制没有开始。
同样,所有其他api调用(其中数千个)都没有发生任何事故,这个特殊的调用在大约4分钟内就可以使用请求库了,我试图禁用下载大小限制以及增加它们但它仍然冻结没有其他日志输出(在调试级别上)。一切似乎表明在下载时挂起而没有进入回调。有什么建议吗?