2016-12-01 95 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 –