【发布时间】:2016-01-12 05:48:57
【问题描述】:
我正在使用 celery 运行 django 应用程序。我的 tasks.py 文件中出现一个奇怪的错误,如下所示:
from __future__ import absolute_import
from celery import shared_task
from django.contrib.auth.models import User
# some code
# ....
这是错误:
django.core.exceptions.ImproperlyConfigured: The SECRET_KEY must not be empty.
在我的 settings.py 中,SECRET_KEY 已定义
# ...
import myproj.tasks
import djcelery
djcelery.setup_loader()
# ...
SECRET_KEY = '18730s9n9sjxamsuJSismxOIAmso102xjAs'
# ...
如果我在 tasks.py 文件中注释导入,应用程序运行良好:
# from django.contrib.auth.models import User
而且,更令人惊讶的是,如果我在同一目录中的另一个文件(例如 testfile.py)中进行完全相同的导入,它也运行良好。
为什么会出现这个错误?
编辑:这是我的 celery.py 文件
from __future__ import absolute_import
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproj.settings')
from django.conf import settings #noqa
app = Celery('myproj')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
【问题讨论】:
-
你设置
DJANGO_SETTINGS_MODULE环境变量了吗? -
是的,在manage.py中设置了
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproj.settings") -
你使用的是哪个 Django 版本?
-
很可能是循环导入某处的结果。如果没有您的整个代码库,很难准确地判断出哪里。
-
可能是您在设置文件中导入某些内容,导致设置文件被导入作为回报? (循环导入)