Django应用程序在Heroku上崩溃

时间:2015-01-18 01:26:39

标签: python django heroku

我正在尝试使用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上使用暂存

暂存文件:

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

Procfile:

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

1 个答案:

答案 0 :(得分:2)

使用--preload标志运行gunicorn服务器显示问题。 Procfile的参数不正确。