在Celery worker运行时,SECRET_KEY设置不能为空

时间:2016-11-10 16:43:15

标签: python django celery

Django 1.9.7。

我目前的项目结构是:

vehicles/
├── etl
│   ├── etl
│   ├── manage.py
│   ├── pipeline
│   └── bku
└── web
    ├── db.sqlite3
    ├── manage.py
    ├── profiles
    ├── projects
    ├── reverse
    ├── static
    ├── templates
    ├── bku
    │   ├── admin.py
    │   ├── admin.pyc
    │   ├── apps.py
    │   ├── migrations
    │   ├── models.py
    │   ├── static
    │   ├── templates
    │   ├── tests.py
    │   ├── urls.py
    │   ├── views.py
    │   └── views.pyc
    └── rocket
        ├── celery.py
        ├── __init__.py
        ├── settings
        │   ├── base.py
        │   ├── dev.py
        │   ├── __init__.py
        │   ├── local.py
        │   ├── production.py
        │   ├── test.py
        ├── urls.py
        ├── wsgi.py

现在我想在bku Django应用中使用Celery。但是当我运行工作人员celery -A rocket worker -l info时,我收到以下错误django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.。我已经定义了SECRET_KEY,在尝试使用Celery之前我没有遇到此错误。

如何管理员工?

火箭/ celery.py

from __future__ import absolute_import, unicode_literals
import os
from celery import Celery

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'rocket.settings')
app = Celery('rocket')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()

@app.task(bind=True)
def debug_task(self):
    print('Request: {0!r}'.format(self.request))

火箭/的初始化的.py

from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app

__all__ = ['bku']

1 个答案:

答案 0 :(得分:5)

错误消息有点误导 - 通常当您看到ImproperlyConfigured异常时,这意味着Django无法找到您的设置文件。

在您的情况下,您将DJANGO_SETTINGS_MODULE环境变量设置为rocket.settings,但是从您的目录结构看起来应该类似于rocket.settings.production