Celery 上的 Heroku 应用程序错误:raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")

Heroku application error on Celery: raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")

我正在尝试在 Heroku 上部署我的 Django 应用程序。每当我打开我的应用程序时,我都会收到错误消息:

2020-09-06T20:31:59.000436+00:00 app[web.1]: raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
2020-09-06T20:31:59.000477+00:00 app[web.1]: django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty

我现在有两个设置文件,所以在我的项目文件夹中包含 wsgi.py。我有一个名为 settings/ 的文件夹,它是:

settings
--common.py
--development.py
--productions.py

在我的 production.py 我有:

from register.settings.common import *
import os
import django_heroku

DEBUG = False

ALLOWED_HOSTS = ['0.0.0.0', 'localhost', '127.0.0.1','appname.heroku.com']

SECRET_KEY = os.environ.get('SECRET_KEY')
EMAIL_HOST_USER = os.environ.get('EMAIL_HOST_USER')
EMAIL_HOST_PASSWORD = os.environ.get('EMAIL_HOST_PASSWORD')

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'


django_heroku.settings(locals())

在我的 wsgi.pymanage.py 中,我有:

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'register.settings.production')

现在我已经从仪表板添加了 Postgres 附加组件,并且可以使用 Heroku CLI 检查我是否也有它。

我还添加了一个自定义域名 www.myapp.com,我不知道这是否会导致问题。

为了推动掌握,我做了:

heroku config:set DISABLE_COLLECTSTATIC=1

然后:

git push heroku master

导致此问题的原因是什么?当我执行 python manage.py run server 时,我也会收到错误消息:

raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.

我在检查 Heroku 日志时也遇到了这个错误 我该如何设置密钥?

编辑 2

问题似乎出在我的 celery.py 文件上,但是,我已尝试将设置更改为指向 production.py(在我的项目根文件夹中注册):

from __future__ import absolute_import
import os
from celery import Celery
from django.conf import settings
import django

app = Celery('register')

app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks(settings.INSTALLED_APPS)

在我的 manage.py 我有:

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'register.settings.development') 但是命令 manage.py runserver 有效,现在我得到一个错误:

8:52:21 PM web.1 |      raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
8:52:21 PM web.1 |  django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.

在我的 wsgi.py 文件的这一行中:

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'register.settings.production') application = get_wsgi_application()

您似乎还没有设置 SECRET_KEY

您尝试从 settings 模块中的环境中导入它,但这取决于名为 SECRET_KEY 现有的环境变量:

SECRET_KEY = os.environ.get('SECRET_KEY')

在 Heroku 上,设置此环境变量的最佳方法是设置 config var。这可以通过 Heroku CLI 完成:

heroku config:set SECRET_KEY=some_value

或在网络仪表板中。