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.py
和 manage.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
或在网络仪表板中。
我正在尝试在 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.py
和 manage.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
或在网络仪表板中。