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

srg*_*bnd 4 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
Run Code Online (Sandbox Code Playgroud)

现在我想在Django应用程序中使用Celerybku.但是,当我运行该工作程序时,celery -A rocket worker -l info我收到以下错误django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty..我有SECRET_KEY定义的,在尝试芹菜之前我没有这个错误.

我该怎么办工人?

火箭/ 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))
Run Code Online (Sandbox Code Playgroud)

rocket/init .py

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

__all__ = ['bku']
Run Code Online (Sandbox Code Playgroud)

Kev*_*nry 6

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

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