【问题标题】:Heroku App Crashed DjangoHeroku 应用程序崩溃 Django
【发布时间】:2015-04-22 09:07:47
【问题描述】:

我正在尝试将我的 Django 网站部署到 Heroku,但是当我加载我的网站时,我收到了这个错误:

应用程序错误:

应用程序发生错误,您的页面无法访问 服务。请稍后再试。

如果您是应用程序所有者,请查看您的日志以了解详细信息。

所以我输入heroku logs,这就是我得到的:

2015-02-20T15:49:36.361800+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/workers/base.py", line 116, in init_process
2015-02-20T15:49:36.361809+00:00 app[web.1]:     return  util.import_app(self.app_uri)
2015-02-20T15:49:36.361801+00:00 app[web.1]:     self.wsgi = self.app.wsgi()
2015-02-20T15:49:36.361803+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
2015-02-20T15:49:36.361805+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
2015-02-20T15:49:36.361808+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
2015-02-20T15:49:36.361811+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/util.py", line 355, in import_app
2015-02-20T15:49:36.361815+00:00 app[web.1]:     application = get_wsgi_application()
2015-02-20T15:49:36.361817+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/core/wsgi.py", line 14, in get_wsgi_application
2015-02-20T15:49:36.361812+00:00 app[web.1]:     __import__(module)
2015-02-20T15:49:36.361819+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/__init__.py", line 20, in setup
2015-02-20T15:49:36.361814+00:00 app[web.1]:   File "/app/django_test/wsgi.py", line 14, in <module>
2015-02-20T15:49:36.361818+00:00 app[web.1]:     django.setup()
2015-02-20T15:49:36.361823+00:00 app[web.1]:     logging_config_func(logging_settings)
2015-02-20T15:49:36.361821+00:00 app[web.1]:     configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
2015-02-20T15:49:36.361822+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/log.py", line 87, in configure_logging
2015-02-20T15:49:36.361829+00:00 app[web.1]:     '%r: %s' % (name, e))
2015-02-20T15:49:36.361830+00:00 app[web.1]: ValueError: Unable to configure handler 'default': [Errno 2] No such file or directory: '/app/logs/mylog.log'
2015-02-20T15:49:36.361929+00:00 app[web.1]: [2015-02-20 15:49:36 +0000] [9] [INFO] Worker exiting (pid: 9)
2015-02-20T15:49:36.361825+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/logging/config.py", line 794, in dictConfig
2015-02-20T15:49:36.361828+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/logging/config.py", line 576, in configure
2015-02-20T15:49:36.361826+00:00 app[web.1]:       dictConfigClass(config).configure()
2015-02-20T15:49:36.488086+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 503, in spawn_worker
2015-02-20T15:49:36.488087+00:00 app[web.1]:     worker.init_process()
2015-02-20T15:49:36.488090+00:00 app[web.1]:     self.wsgi =  self.app.wsgi()
2015-02-20T15:49:36.488092+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
2015-02-20T15:49:36.488093+00:00 app[web.1]:     self.callable = self.load()
2015-02-20T15:49:36.488089+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/workers/base.py", line 116, in init_process
2015-02-20T15:49:36.488103+00:00 app[web.1]:   File "/app/django_test/wsgi.py", line 14, in <module>
2015-02-20T15:49:36.488099+00:00 app[web.1]:     return util.import_app(self.app_uri)
2015-02-20T15:49:36.488100+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/util.py", line 355, in import_app
2015-02-20T15:49:36.488101+00:00 app[web.1]:     __import__(module)
2015-02-20T15:49:36.488082+00:00 app[web.1]: [2015-02-20 15:49:36 +0000]  [10] [ERROR] Exception in worker process:
2015-02-20T15:49:36.488076+00:00 app[web.1]: /app/static/
2015-02-20T15:49:36.488084+00:00 app[web.1]: Traceback (most recent call last):
2015-02-20T15:49:36.488106+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/core/wsgi.py", line 14, in get_wsgi_application
2015-02-20T15:49:36.488108+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/__init__.py", line 20, in setup
2015-02-20T15:49:36.488131+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/logging/config.py", line 576, in configure
2015-02-20T15:49:36.488111+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/log.py", line 87, in configure_logging
2015-02-20T15:49:36.488113+00:00 app[web.1]:     logging_config_func(logging_settings)
2015-02-20T15:49:36.488095+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
2015-02-20T15:49:36.488133+00:00 app[web.1]: ValueError: Unable to configure handler 'default': [Errno 2] No such file or directory: '/app/logs/mylog.log'
2015-02-20T15:49:36.488140+00:00 app[web.1]:     self.wsgi = self.app.wsgi()
2015-02-20T15:49:36.488136+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 503, in spawn_worker
2015-02-20T15:49:36.488096+00:00 app[web.1]:     return self.load_wsgiapp()
2015-02-20T15:49:36.488141+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
2015-02-20T15:49:36.488143+00:00 app[web.1]:     self.callable = self.load()
2015-02-20T15:49:36.488097+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
2015-02-20T15:49:36.488148+00:00 app[web.1]:     return util.import_app(self.app_uri)
2015-02-20T15:49:36.488104+00:00 app[web.1]:     application = get_wsgi_application()
2015-02-20T15:49:36.488153+00:00 app[web.1]:   File "/app/django_test/wsgi.py", line 14, in <module>
2015-02-20T15:49:36.488110+00:00 app[web.1]:     configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
2015-02-20T15:49:36.488158+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/__init__.py", line 20, in setup
2015-02-20T15:49:36.488157+00:00 app[web.1]:     django.setup()
2015-02-20T15:49:36.488160+00:00 app[web.1]:     configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
2015-02-20T15:49:36.488150+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/util.py", line 355, in import_app
2015-02-20T15:49:36.488107+00:00 app[web.1]:     django.setup()
2015-02-20T15:49:36.488151+00:00 app[web.1]:     __import__(module)
2015-02-20T15:49:36.488163+00:00 app[web.1]:     logging_config_func(logging_settings)
2015-02-20T15:49:36.488114+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/logging/config.py", line 794, in dictConfig
2015-02-20T15:49:36.488132+00:00 app[web.1]:     '%r: %s' % (name, e))
2015-02-20T15:49:36.488129+00:00 app[web.1]:     dictConfigClass(config).configure()
2015-02-20T15:49:36.488164+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/logging/config.py", line 794, in dictConfig
2015-02-20T15:49:36.488165+00:00 app[web.1]:     dictConfigClass(config).configure()
2015-02-20T15:49:36.488168+00:00 app[web.1]:     '%r: %s' % (name, e))
2015-02-20T15:49:36.488139+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/workers/base.py", line 116, in init_process
2015-02-20T15:49:36.488135+00:00 app[web.1]: Traceback (most recent call last):
2015-02-20T15:49:36.488137+00:00 app[web.1]:     worker.init_process()
2015-02-20T15:49:36.488167+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/logging/config.py", line 576, in configure
2015-02-20T15:49:36.507131+00:00 app[web.1]:     super(Application, self).run()
2015-02-20T15:49:36.507076+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/base.py", line 189, in run
2015-02-20T15:49:36.488146+00:00 app[web.1]:     return self.load_wsgiapp()
2015-02-20T15:49:36.488144+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
2015-02-20T15:49:36.507001+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 74, in run
2015-02-20T15:49:36.506915+00:00 app[web.1]: Traceback (most recent call last):
2015-02-20T15:49:36.506970+00:00 app[web.1]:     sys.exit(run())
2015-02-20T15:49:36.507154+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/base.py", line 72, in run
2015-02-20T15:49:36.507531+00:00 app[web.1]:     self.reap_workers()
2015-02-20T15:49:36.507476+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 210, in handle_chld
2015-02-20T15:49:36.507269+00:00 app[web.1]:     self.halt(reason=inst.reason, exit_status=inst.exit_status)
2015-02-20T15:49:36.488147+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
2015-02-20T15:49:36.488154+00:00 app[web.1]:     application = get_wsgi_application()
2015-02-20T15:49:36.488171+00:00 app[web.1]: [2015-02-20 15:49:36 +0000] [10] [INFO] Worker exiting (pid: 10)
2015-02-20T15:49:36.507190+00:00 app[web.1]:     Arbiter(self).run()
2015-02-20T15:49:36.507453+00:00 app[web.1]:     time.sleep(0.1)
2015-02-20T15:49:36.507056+00:00 app[web.1]:     WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run()
2015-02-20T15:49:36.507382+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 338, in stop
2015-02-20T15:49:36.507715+00:00 app[web.1]: gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>
2015-02-20T15:49:36.488161+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/log.py", line 87, in configure_logging
2015-02-20T15:49:36.488170+00:00 app[web.1]: ValueError: Unable to configure handler 'default': [Errno 2] No such file or directory: '/app/logs/mylog.log'
2015-02-20T15:49:36.507292+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 293, in halt
2015-02-20T15:49:36.507213+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 197, in run
2015-02-20T15:49:36.507642+00:00 app[web.1]:     raise HaltServer(reason, self.WORKER_BOOT_ERROR)
2015-02-20T15:49:36.507358+00:00 app[web.1]:     self.stop()
2015-02-20T15:49:36.488155+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/core/wsgi.py", line 14, in get_wsgi_application
2015-02-20T15:49:36.506923+00:00 app[web.1]:   File "/app/.heroku/python/bin/gunicorn", line 11, in <module>
2015-02-20T15:49:36.507554+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 455, in reap_workers
2015-02-20T15:49:37.304329+00:00 heroku[web.1]: State changed from up to crashed
2015-02-20T15:49:37.292485+00:00 heroku[web.1]: Process exited with status 1
2015-02-20T15:49:36.299215+00:00 heroku[web.1]: State changed from starting to up
2015-02-20T15:49:42.613930+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=article-django.herokuapp.com request_id=5e18c64f-98b1-4f2b-a88b-c9d93a0908e9 fwd="173.3.238.36" dyno=web.1 connect=5001ms service= status=503 bytes=

我查看了此日志,似乎主要问题是 '/app/logs/mylog.log' 不存在。如果是这种情况,我该如何创建该文件?

编辑:这是我的 settings.py 文件的 LOGGING 部分:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'mail_admins':{
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler',
            'email_backend': 
    'django.core.mail.backends.filebased.EmailBackend',
        }
    },
    'loggers': {
        'django.request': {
             'handlers': ['mail_admins'],
             'level': 'ERROR',
             'propogate': True,
         },
    }
}

【问题讨论】:

  • 这个answer 可能有帮助吗?
  • @chridam:但我不确定我的 Ubuntu 机器上是否有 Apache 服务器。如何确定是否安装了这样的服务器?
  • 不太清楚你该如何解决这个问题,我只是碰到了类似的解决方案,并认为它可能会给你一些指导。另一方面,这可能更接近stackoverflow.com/a/20983546
  • 感谢您的帮助
  • 查看 Django 文档中有关日志配置的部分。在不了解您的文件夹结构和设置的情况下,我无能为力,但希望这将为您指明正确的方向:docs.djangoproject.com/en/1.7/topics/logging/…

标签: django heroku


【解决方案1】:

/app 是您的应用程序在 Heroku 上的目录。尝试在项目的根目录中添加logs 目录并将其推送到 Heroku - 然后该目录将存在,因此应该可以毫无问题地创建日志文件。

【讨论】:

  • 我该怎么做呢?我会将logs 添加到哪个文件。我有点困惑。
  • 不要添加任何文件 - 在您的项目中创建名为 logs 的目录并将其添加到 git repo。然后将更改推送到 Heroku。这个新目录将在 Heroku 上的 /app/logs 路径下克隆,然后我认为自动创建 mylog.log 文件不会有问题,这似乎是这里的主要问题。
  • mylog.log 显然没有创建,因为我的网站仍然无法正常工作并且我得到了相同的 Traceback。我做了mkdir logs。然后我做了git add logsgit commit -m "Created directory", and git push heroku master`,但我得到了Everything is up-to-date。然而,当我刷新我的网站页面时,我得到了同样的应用程序错误,我不知道我做错了什么。
  • 嗯,尝试在 logs 目录中创建任何文件,将其添加到 repo 并再次推送 - 也许 Heroku 的 git 不会将空目录视为有效更改。
  • 那个错误消失了,所以谢谢你,但现在我有一个新错误:ValueError: Unable to configure logger 'django_request': Unable to add handler 'request_handler': 'request_handler'。查看我刚刚在原始帖子中发布的 settings.py 代码。
猜你喜欢
  • 2016-11-20
  • 2015-03-16
  • 1970-01-01
  • 1970-01-01
  • 2019-02-06
  • 2011-10-03
  • 2016-08-04
相关资源
最近更新 更多