问题 启动芹菜工人抛出“无属性'worker_state_db'”


当我尝试在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))

    AttributeError: 'Settings' object has no attribute 'worker_state_db'

如果你知道如何解决它,请写下你的想法!


8934
2017-12-01 16:30


起源



答案:


如果在解析设置时引发异常,则会出现该错误。比如当我们设置Django的时候 SECRET_KEY (或任何其他设置)通过环境变量:

SECRET_KEY = os.environ['SECRET_KEY']

要解决此问题,您可以切换回:

SECRET_KEY = "asdfasdfasdf"

或使用:

SECRET_KEY = os.environ.get('SECRET_KEY', '')

如果您在以下行中注释,您还可以找到导致问题的设置 celery.py 文件并再次启动工作人员:

app.config_from_object('django.conf:settings', namespace='CELERY')

14
2017-12-09 12:10



删除该行 app.config_from_object... 没有调试问题,但改变 SECRET_KEY = os.environ... 工作得很好。谢谢。 - Diego Jancic
奇怪,上次我有一些没有get()加载的变量,我设法在评论该行后找到它们中的每一个。无论如何,最好通过所有设置并检查哪些设置加载了os.environ ['xxxxx'] - Alexander Tyapkov
如果我需要将这些变量放在os.enviro中怎么办? @alexander - Ajay Gupta
他们是在os环境中。只是不同的方法来解决它们 - Alexander Tyapkov


答案:


如果在解析设置时引发异常,则会出现该错误。比如当我们设置Django的时候 SECRET_KEY (或任何其他设置)通过环境变量:

SECRET_KEY = os.environ['SECRET_KEY']

要解决此问题,您可以切换回:

SECRET_KEY = "asdfasdfasdf"

或使用:

SECRET_KEY = os.environ.get('SECRET_KEY', '')

如果您在以下行中注释,您还可以找到导致问题的设置 celery.py 文件并再次启动工作人员:

app.config_from_object('django.conf:settings', namespace='CELERY')

14
2017-12-09 12:10



删除该行 app.config_from_object... 没有调试问题,但改变 SECRET_KEY = os.environ... 工作得很好。谢谢。 - Diego Jancic
奇怪,上次我有一些没有get()加载的变量,我设法在评论该行后找到它们中的每一个。无论如何,最好通过所有设置并检查哪些设置加载了os.environ ['xxxxx'] - Alexander Tyapkov
如果我需要将这些变量放在os.enviro中怎么办? @alexander - Ajay Gupta
他们是在os环境中。只是不同的方法来解决它们 - Alexander Tyapkov