当前位置:  开发笔记 > 编程语言 > 正文

Django ImproperlyConfigured - SECRET_KEY设置不能为空

如何解决《DjangoImproperlyConfigured-SECRET_KEY设置不能为空》经验,为你挑选了1个好方法。

我正在使用芹菜运行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)

Paulo.. 5

该问题是由将celery任务导入设置文件以将其传递给CELERYBEAT_SCHEDULE设置引起的.

此导入导致循环导入,因为在导入任务时,它将加载仅在导入任务之前加载的设置,因此抱怨没有SECRET_KEY配置.

要解决此问题(并作为一般最佳实践),在配置时CELERYBEAT_SCHEDULE使用任务路径,如下所示:

CELERYBEAT_SCHEDULE = {
    'add-every-30-seconds': {
        'task': 'myapp.tasks.my_task',
        'schedule': timedelta(seconds=30),
        'args': (16, 16)
    },
}

来源http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html#entries



1> Paulo..:

该问题是由将celery任务导入设置文件以将其传递给CELERYBEAT_SCHEDULE设置引起的.

此导入导致循环导入,因为在导入任务时,它将加载仅在导入任务之前加载的设置,因此抱怨没有SECRET_KEY配置.

要解决此问题(并作为一般最佳实践),在配置时CELERYBEAT_SCHEDULE使用任务路径,如下所示:

CELERYBEAT_SCHEDULE = {
    'add-every-30-seconds': {
        'task': 'myapp.tasks.my_task',
        'schedule': timedelta(seconds=30),
        'args': (16, 16)
    },
}

来源http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html#entries

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有