【问题标题】:Scrapyd fails on depricated settings in environment variablesScrapyd 在环境变量中的废弃设置上失败
【发布时间】:2020-09-09 07:35:02
【问题描述】:

我们在 ubuntu 18.04 上的 python 3.6 中运行 scrapy 2.1.0 和 scrapyd,我遇到了一个问题,我需要帮助了解如何以正确的方式解决。我是 python 新手(来自其他语言),所以请慢慢大声说话,以便我理解 =)

问题是作业可能会在 scrapyd 计划中被卡在“待处理”状态。使用systemctl status scrapyd.service 读取最新日志消息时,会显示弃用警告。

usr/local/lib/python3.6/dist-packages/scrapy/utils/project.py:94:ScrapyDeprecationWarning:不推荐使用以 SCRAPY_ 为前缀的环境变量来覆盖设置。当前定义了以下环境变量:JOB、LOG_FILE、SLOT、SPIDER

阅读this issue 后,我了解问题的本质,我的猜测是(请在此处纠正我)scrapyd 在运行时定义这些环境变量,这会触发scrapy 中的警告,然后阻止scrapyd 继续。

我可以在 scrapy 项目 settings.py 中定义 LOG_FILE,但其他三个感觉非常特定于 scrapyd 运行时/调度,并且不是 scrapy 项目设置文件的一部分。

我似乎可行的丑陋解决方法是将这些变量添加到第 80 行 /scrapy/utils/project.py 的列表中。

scrapy_envvars = {k[7:]: v for k, v in os.environ.items() if
                  k.startswith('SCRAPY_')}
valid_envvars = {
    'CHECK',
    'PICKLED_SETTINGS_TO_OVERRIDE',
    'PROJECT',
    'PYTHON_SHELL',
    'SETTINGS_MODULE',
    'JOB',              # <<--- here...
    'LOG_FILE',         # <<--- here...
    'SLOT',             # <<--- here...
    'SPIDER',           # <<--- and here
}
setting_envvars = {k for k in scrapy_envvars if k not in valid_envvars}
if setting_envvars:
    setting_envvar_list = ', '.join(sorted(setting_envvars))
    warnings.warn(
        'Use of environment variables prefixed with SCRAPY_ to override '
        'settings is deprecated. The following environment variables are '
        'currently defined: {}'.format(setting_envvar_list),
        ScrapyDeprecationWarning
    )

这使得弃用警告消失,scrapyd schedule 可以将作业从挂起移动到运行然后完成。

显然这是一个非常糟糕的主意,因为我正在更改 lib/module/package(或任何正确术语)中的代码,并且这将被包管理器的任何更新覆盖。

所以我的问题是,假设我已经正确理解了问题的根源,那么在不更改 scrapy 核心内部代码的情况下解决此问题的正确方法是什么?

提前感谢您的意见!

【问题讨论】:

    标签: scrapy scrapyd


    【解决方案1】:

    我的/scrapy/utils/project.py 没有那些注释行了,但我也面临这个问题。

    通过检查我的环境变量(通过提示符下的这个命令:printenv)我发现SCRAPY_SETTINGS_MODULE 指向我的scrapy 设置。这正是警告“使用以 SCRAPY_ 为前缀的环境变量”。使用unset SCRAPY_SETTINGS_MODULE,我已经能够将其从环境中移除。

    【讨论】:

      猜你喜欢
      • 2013-10-30
      • 1970-01-01
      • 2019-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-01
      • 2023-03-13
      • 2012-03-07
      相关资源
      最近更新 更多