为什么 HttpCachedMiddleware 需要 scrapy.cfg 以及如何解决这个问题?
我scrapyd-deploy
用来构建鸡蛋,并将项目部署到scrapyd。
作业运行时,我从日志输出中看到 HttpCacheMiddleware 已禁用,因为找不到 scrapy.cfg。
2014-06-08 18:55:51-0700 [scrapy] 警告:已禁用 HttpCacheMiddleware:无法找到 scrapy.cfg 文件来推断项目数据目录
我检查了 egg 文件,scrapy.cfg 确实不存在,因为 egg 文件只包含项目目录中的文件。我可能是错的,但我认为鸡蛋是正确建造的。
foo/
|- project/
| |- __init__.py
| |- settings.py
| |- spiders/
| |- ...
|- scrapy.cfg
深入研究代码,我认为三个 if 条件之一在 MiddlewareManager 中以某种方式失败。
try:
mwcls = load_object(clspath)
if crawler and hasattr(mwcls, 'from_crawler'):
mw = mwcls.from_crawler(crawler)
elif hasattr(mwcls, 'from_settings'):
mw = mwcls.from_settings(settings)
else:
mw = mwcls()
middlewares.append(mw)
except NotConfigured, e:
if e.args:
clsname = clspath.split('.')[-1]
log.msg(format="Disabled %(clsname)s: %(eargs)s",
level=log.WARNING, clsname=clsname, eargs=e.args[0])