【问题标题】:Django app crashing on HerokuDjango 应用程序在 Heroku 上崩溃
【发布时间】:2015-03-16 08:58:03
【问题描述】:

我正在尝试使用 runserver 将在我的计算机上运行良好的应用程序移植到 Heroku。我是 Django 新手,之前从未在 Heroku 上部署过应用程序。我不确定我错过了什么。

这里是heroku错误:

2015-01-18T00:59:22.855761+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 74, in run

2015-01-18T00:59:22.855803+00:00 app[web.1]:     WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run()

2015-01-18T00:59:22.855877+00:00 app[web.1]:     super(Application, self).run()

2015-01-18T00:59:22.856001+00:00 app[web.1]:     self.manage_workers()

2015-01-18T00:59:22.856023+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 477, in manage_workers

2015-01-18T00:59:22.856111+00:00 app[web.1]:     self.spawn_workers()

2015-01-18T00:59:22.856132+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 542, in spawn_workers

2015-01-18T00:59:22.855899+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/base.py", line 71, in run

2015-01-18T00:59:22.856230+00:00 app[web.1]:     time.sleep(0.1 * random.random())

2015-01-18T00:59:22.856252+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 209, in handle_chld

2015-01-18T00:59:22.856491+00:00 app[web.1]: gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>

2015-01-18T00:59:22.856303+00:00 app[web.1]:     self.reap_workers()

2015-01-18T00:59:22.856324+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 459, in reap_workers

2015-01-18T00:59:22.856408+00:00 app[web.1]:     raise HaltServer(reason, self.WORKER_BOOT_ERROR)

2015-01-18T00:59:22.855680+00:00 app[web.1]: Traceback (most recent call last):
2015-01-18T00:59:22.855699+00:00 app[web.1]:   File "/app/.heroku/python/bin/gunicorn", line 11, in <module>

2015-01-18T00:59:22.855732+00:00 app[web.1]:     sys.exit(run())

2015-01-18T00:59:22.855825+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/base.py", line 185, in run

2015-01-18T00:59:22.855932+00:00 app[web.1]:     Arbiter(self).run()

2015-01-18T00:59:22.855953+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 169, in run

2015-01-18T00:59:23.546103+00:00 heroku[web.1]: Process exited with status 1

2015-01-18T00:59:23.550975+00:00 heroku[web.1]: State changed from starting to crashed

2015-01-18T00:59:25.538419+00:00 heroku[api]: Scale to web=1 by thebucketmoney@gmail.com

2015-01-18T01:00:20.825543+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" 

我的 wsgi 文件如下所示:

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ssbo.settings")

from django.core.wsgi import get_wsgi_application
from whitenoise.django import DjangoWhiteNoise
from dj_static import Cling

application = Cling(get_wsgi_application())
application = DjangoWhiteNoise(application)

我创建了几个设置文件(基本、本地、暂存、生产)。我通过设置 DJANGO_SETTINGS_MODULE="ssbo.settings.staging"

在 heroku 上使用 staging

暂存文件:

DEBUG = True
TEMPLATE_DEBUG = True
WSGI_APPLICATION = 'ssbo.wsgi.application'
SESSION_COOKIE_AGE = 300
SECRET_KEY = get_env_variable("SECRET_KEY")

import dj_database_url
DATABASES = {}
DATABASES['default'] =  dj_database_url.config()

基本设置文件:

STATIC_ROOT = 'staticfiles'
STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
BASE_DIR = os.path.join(os.path.dirname(__file__), '..')

requirements.txt:

Django==1.7.3
psycopg2==2.5.4
stripe==1.19.0
gunicorn==19.1.1
dj-database-url==0.3.0
whitenoise==1.0.6
dj-static==0.0.6

过程文件:

web: gunicorn ssbo.wsgi

项目结构:

ssbo
  app
    migrations
    static
      app
    templates
      app
    admin.py
    forms.py
    models.py
    views.py
  ssbo
    settings
      base.py
      local.py
      production.py
      staging.py
    urls.py
    wsgi.py
  manage.py

【问题讨论】:

  • 关于您的项目结构的一点点信息会更好
  • 更新了项目结构,谢谢!
  • 建议删除电子邮件地址 (the**********y@gmail.com)

标签: python django heroku


【解决方案1】:

使用 --preload 标志运行 gunicorn 服务器会发现问题。 Procfile 有一个不正确的参数。

【讨论】:

  • 你做了什么改变?
猜你喜欢
  • 2015-04-22
  • 2016-11-20
  • 1970-01-01
  • 1970-01-01
  • 2019-05-15
  • 1970-01-01
  • 2019-02-06
  • 2011-10-03
相关资源
最近更新 更多