2016-12-01 96 views
9

当我试图启动芹菜工人Django应用程序为:开始芹菜工人抛出“没有属性‘worker_state_db’”

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' 

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

回答

10

如果解析设置时发生异常,则会出现该错误。例如,当我们设置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') 
+0

删除'app.config_from_object ...'这行不能解决问题,但改变'SECRET_KEY = os.environ ...'可以很好地工作。谢谢。 –

+1

奇怪的是,上次我有一些没有get()的加载变量,我设法在评论该行后找到每个变量。无论如何,最好是通过所有的设置,并检查其中哪些加载os.environ ['xxxxx'] –

+0

如果我需要把这些变量放在os.enviro中怎么办? @alexander –