2016-12-01 15 views
9

Khi tôi đang cố gắng để bắt đầu công nhân cần tây trong ứng dụng Django như:Bắt đầu công nhân cần tây ném "không có thuộc tính 'worker_state_db"

celery -A myApp worker -l info 

tôi nhận được lỗi sau:

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' 

Nếu bạn biết làm thế nào để giải quyết nó xin vui lòng viết ý tưởng của bạn!

Trả lời

10

Lỗi xuất hiện nếu ngoại lệ được nâng lên trong khi phân tích cài đặt. Chẳng hạn như khi chúng ta thiết lập của Django SECRET_KEY (hoặc bất kỳ thiết lập khác) thông qua một biến môi trường:

SECRET_KEY = os.environ['SECRET_KEY'] 

Để giải quyết vấn đề bạn có thể chuyển về:

SECRET_KEY = "asdfasdfasdf" 

hoặc sử dụng:

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

Bạn cũng có thể tìm thấy cài đặt nào gây ra sự cố nếu bạn nhận xét dòng sau của chúng tôi trong celery.py tệp và bắt đầu lại công nhân:

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

Xóa dòng 'app.config_from_object ...' không hoạt động để gỡ lỗi sự cố, nhưng thay đổi 'SECRET_KEY = os.environ ...' hoạt động hoàn hảo. Cảm ơn. –

+1

Lạ lùng, lần trước tôi đã có một số biến được tải mà không nhận được() và tôi đã tìm được mỗi biến sau khi nhận xét dòng đó. Dù sao, nó là tốt hơn để đi qua tất cả các thiết lập và kiểm tra mà trong số họ được nạp với os.environ ['xxxxx'] –

+0

nếu tôi cần phải đặt những biến trong os.enviro? @alexander –

Các vấn đề liên quan