【问题标题】:Heroku application error on Celery: raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")Celery 上的 Heroku 应用程序错误:raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
【发布时间】:2020-12-25 08:18:39
【问题描述】:

我正在尝试在 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 config var(环境变量)吗?

标签: python django heroku celery


【解决方案1】:

看起来你根本没有设置你的SECRET_KEY

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

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

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

heroku config:set SECRET_KEY=some_value

或在网络仪表板中。

【讨论】:

  • 我已经在网络仪表板中完成了这项工作,但是 celery.py 仍然给我一个错误。我应该重新启动服务器以使更改生效吗?
  • 您不必重新启动服务器。 Django 现在可以工作吗,例如heroku run python manage.py migrate 会引发 ImproperlyConfigured 错误吗?不应该。
  • 我的 celery.py 文件似乎有错误。我已尝试根据我的新设置文件设置autodiscover_tasks,但出现错误
  • 嗯,你说你也遇到了manage.py runserver 的问题。让我们修复那个。我认为这应该这样做。 那么,我们可以处理你的 Celery 文件了。
  • 所以Heroku run python manage.py migrate 我能够成功运行此命令,但是当我执行heroku local web 时,我从我的 celery.py 文件中得到了上述错误。当我执行manage.py runserver 时,我也会遇到同样的错误。我已经编辑了我的 celery.py 配置
猜你喜欢
  • 2020-05-15
  • 2015-12-17
  • 1970-01-01
  • 1970-01-01
  • 2019-02-07
  • 2023-02-07
  • 2016-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多