3

为什么 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])
4

1 回答 1

1

scrapy.cfg在您的工作目录下放置一个空文件。

源代码所示,project_data_dir将尝试找到最接近的scrapy.cfg并使用它来推断项目数据目录。

于 2014-07-08T06:55:50.120 回答