在环境变量中的去擦洗设置上,Scrapyd失败

在环境变量中的去擦洗设置上,Scrapyd失败,scrapy,scrapyd,Scrapy,Scrapyd,我们在Ubuntu18.04上运行了Python3.6中的Scrapy2.1.0和scrapyd,我遇到了一个问题,我需要帮助理解如何正确解决这个问题。我是python新手(来自其他语言),所以请慢慢大声说,以便我理解=) 问题是作业可能会在计划中被卡住为“挂起”。使用systemctl status scrapyd.service读取最新日志消息时,会显示一条弃用警告 usr/local/lib/python3.6/dist-packages/scrapy/utils/project.py:9

我们在Ubuntu18.04上运行了Python3.6中的Scrapy2.1.0和scrapyd,我遇到了一个问题,我需要帮助理解如何正确解决这个问题。我是python新手(来自其他语言),所以请慢慢大声说,以便我理解=)

问题是作业可能会在计划中被卡住为“挂起”。使用
systemctl status scrapyd.service
读取最新日志消息时,会显示一条弃用警告

usr/local/lib/python3.6/dist-packages/scrapy/utils/project.py:94:scrapydepreaction警告:不推荐使用前缀为scrapy_uuu的环境变量来覆盖设置。当前定义了以下环境变量:作业、日志文件、插槽、SPIDER

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

我可以在scrapy project settings.py中定义LOG_文件,但其他三个文件感觉非常特定于scrapy运行时/计划,并且不是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
    )
scrapy_envvars={k[7:]:v代表k,v在os.environ.items()中,如果
k、 开始使用('SCRAPY')}
有效的环境变量={
“检查”,
“PICKLED\u设置\u到\u覆盖”,
“项目”,
“PYTHON_SHELL”,
“设置\u模块”,

“JOB”#我的
/scrapy/utils/project.py
不再有这些注释行,但我也面临着这个问题

通过检查我的环境变量(在提示符下通过此命令:
printenv
),我发现
SCRAPY\u设置\u模块
指向我的SCRAPY设置。这正是警告“使用以SCRAPY\u为前缀的环境变量”。通过
取消设置刮擦设置\u模块
我可以将其从环境中删除