gpt4 book ai didi

python - Django 不正确配置 - SECRET_KEY 设置不能为空

转载 作者:太空狗 更新时间:2023-10-30 01:06:51 25 4
gpt4 key购买 nike

我正在使用 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)

最佳答案

问题是由于将 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

关于python - Django 不正确配置 - SECRET_KEY 设置不能为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34728146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com