gpt4 book ai didi

Scrapyd 在环境变量中的 depricated 设置上失败

转载 作者:行者123 更新时间:2023-12-05 06:16:44 40 4
gpt4 key购买 nike

我们在 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: Use of environment variables prefixed with SCRAPY_ to override settings is deprecated. The following environment variables are currently defined: 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/utils/project.py 不再有那些注释行,但我也面临这个问题。

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

关于Scrapyd 在环境变量中的 depricated 设置上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61955391/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com