【发布时间】:2014-06-09 03:04:59
【问题描述】:
为什么 HttpCachedMiddleware 需要 scrapy.cfg,我该如何解决这个问题?
我使用scrapyd-deploy来构建egg,并将项目部署到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
深入研究code,我认为三个 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])
【问题讨论】: