![](/img/trans.png)
[英]Django, Celery Supervisor: Secret Key Error: django.core.exceptions.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 日志時,我也在我的 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
或在網絡儀表板中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.