简体   繁体   English

为什么whitenoise在Heroku上的默认Django项目中崩溃?

[英]Why is whitenoise crashing in a default Django project on Heroku?

I'm trying to launch a new Django app, following Heroku's instructions. 我正在尝试按照Heroku的指示启动一个新的Django应用程序。 When I get to activating whitenoise it crashes. 当我开始激活whitenoise时,它会崩溃。 I haven't even written any app code yet. 我还没有编写任何应用程序代码。 What's going wrong? 出了什么问题? Here's the traceback of a web worker crashing: 这是网络工作者崩溃的追溯:

[2015-06-26 20:37:36 +0000] [11] [ERROR] Exception in worker process:
Traceback (most recent call last):
  File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 507, in spawn_worker
    worker.init_process()
  File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/workers/base.py", line 118, in init_process
    self.wsgi = self.app.wsgi()
    self.callable = self.load()
  File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
  File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
    return self.load_wsgiapp()
  File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
    return util.import_app(self.app_uri)
  File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/util.py", line 355, in import_app
    __import__(module)
  File "/app/prompt/wsgi.py", line 4, in <module>
    from whitenoise.django import DjangoWhiteNoise
  File "/app/.heroku/python/lib/python2.7/site-packages/whitenoise/django.py", line 14, in <module>
    from django.contrib.staticfiles.storage import staticfiles_storage
  File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/staticfiles/storage.py", line 12, in <module>
    from django.core.cache import (
  File "/app/.heroku/python/lib/python2.7/site-packages/django/core/cache/__init__.py", line 34, in <module>
    if DEFAULT_CACHE_ALIAS not in settings.CACHES:
  File "/app/.heroku/python/lib/python2.7/site-packages/django/conf/__init__.py", line 48, in __getattr__
  File "/app/.heroku/python/lib/python2.7/site-packages/django/conf/__init__.py", line 42, in _setup
    self._setup(name)
    % (desc, ENVIRONMENT_VARIABLE))
ImproperlyConfigured: Requested setting CACHES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
    worker.init_process()

Note that the application worked fine, correctly serving the index page 404, until I edited the wsgi.py file as specified in https://devcenter.heroku.com/articles/django-assets 请注意,应用程序工作正常,正确地提供索引页面404,直到我编辑了https://devcenter.heroku.com/articles/django-assets中指定的wsgi.py文件

What does your wsgi.py file look like? 你的wsgi.py文件是什么样的? Note that you must initialize settings before importing whitenoise, as per this issue on github. 请注意,您必须在导入whitenoise之前初始化设置,根据github上的此问题 Try something like this: 尝试这样的事情:

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "prompt.settings")

from whitenoise.django import DjangoWhiteNoise

application = DjangoWhiteNoise(get_wsgi_application())

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM