Python “开始芹菜工人扔”;无属性';工人(州)db和"x27 ;&引用;
当我尝试在Django应用程序中启动芹菜工人时,如下所示:Python “开始芹菜工人扔”;无属性';工人(州)db和"x27 ;&引用;,python,django,celery,Python,Django,Celery,当我尝试在Django应用程序中启动芹菜工人时,如下所示: celery -A myApp worker -l info 我发现以下错误: File "/home/alexander/.pyenv/versions/3.5.1/envs/myApp/lib/python3.5/site-packages/celery/utils/collections.py", line 134, in __getattr__ type(self).__name__, k)) Attribu
celery -A myApp worker -l info
我发现以下错误:
File "/home/alexander/.pyenv/versions/3.5.1/envs/myApp/lib/python3.5/site-packages/celery/utils/collections.py", line 134, in __getattr__
type(self).__name__, k))
AttributeError: 'Settings' object has no attribute 'worker_state_db'
如果你知道如何解决它,请写下你的想法 如果在解析设置时引发异常,则会出现错误。例如,当我们通过环境变量设置Django的
密钥
(或任何其他设置)时:
SECRET_KEY = os.environ['SECRET_KEY']
要解决此问题,您可以切换回:
SECRET_KEY = "asdfasdfasdf"
或使用:
SECRET_KEY = os.environ.get('SECRET_KEY', '')
如果您在cellery.py
文件中注释以下行并再次启动worker,您还可以找到导致问题的设置:
app.config_from_object('django.conf:settings', namespace='CELERY')
我想补充两点:
worker\u state\u db
是一个带有默认值的设置,因此您不必手动设置它。引发异常是因为设置
只是空的,没有任何值,甚至没有默认值。也就是说,我们没有加载默认配置。在芹菜中,解析异常(导致问题的原始异常)在启动工作程序时不会传播到stderr。因此,您会收到一条消息,它不会告诉您任何可能的解决方案
如何修复它?
例如,如果您将芹菜应用程序模块放置在celeryconfig.py
的位置,并通过以下方式从该位置加载设置:
app.config_from_object('path.to.your.celery.module.celeryconfig')
检查整个
celeryconfig.py
文件中是否存在任何可能导致解析器崩溃或崩溃的内容(设置值不兼容?)我在尝试使用停靠的django项目配置芹菜时反复遇到了这个问题。解决方案包括docker-compose.yaml中的env_文件
:
celery:
...
env_file: .env
当在settings.py中加载的config.json中缺少一个键(基本上是settings.py中缺少一个键)时,我遇到了相同的错误 错误文本是完全不相关的。
希望有帮助 从对象中删除行
app.config\u…
无法调试问题,但更改SECRET\u KEY=os.environ…
效果很好。谢谢。奇怪的是,上次我有一些变量是在没有get()的情况下加载的,我在注释那一行后设法找到了它们。无论如何,最好检查所有设置,并检查其中哪些是用os.enviro['xxxxx']加载的,如果我需要将这些变量放入os.enviro中怎么办@它们在操作系统环境中。只是用不同的方法把它们弄出来,效果很好;我假设如果你有不同的服务,那么一定是它们不共享同一个环境?对我来说,配置确实加载了,但我在芹菜4.3.0中仍然遇到了这个问题