【问题标题】:Can't deploy Django application in Heroku cloud无法在 Heroku 云中部署 Django 应用程序
【发布时间】:2015-11-22 18:08:29
【问题描述】:

我似乎无法通过gunicorn 部署我的 Django 应用程序。这是我的Procfile

web: gunicorn config.wsgi:application

我的wsgi文件不在项目下,而是在配置文件夹下./config/wsgi.py:

import os

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

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.production")
application = get_wsgi_application()
application = DjangoWhiteNoise(application)

我正在使用heroku local 工具尝试对此进行测试,但我遇到了这个错误:

$heroku local
forego | starting web.1 on port 5000
web.1  | [2015-11-22 10:05:29 -0800] [32081] [INFO] Starting gunicorn 19.3.0
web.1  | [2015-11-22 10:05:29 -0800] [32081] [INFO] Listening at: http://0.0.0.0:5000 (32081)
web.1  | [2015-11-22 10:05:29 -0800] [32081] [INFO] Using worker: sync
web.1  | [2015-11-22 10:05:29 -0800] [32084] [INFO] Booting worker with pid: 32084
web.1  | [2015-11-22 10:05:29 -0800] [32084] [ERROR] Exception in worker process:
web.1  |   __import__(module)
web.1  | hon2.7/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
web.1  | [2015-11-22 10:05:29 -0800] [32084] [INFO] Worker exiting (pid: 32084)
web.1  | [2015-11-22 10:05:29 -0800] [32081] [INFO] Shutting down: Master
web.1  | [2015-11-22 10:05:29 -0800] [32081] [INFO] Reason: Worker failed to boot.

我已经尝试阅读 Procfile 配置和 gunicorn 几个小时,并尝试了不同的配置,甚至尝试将 wsgi 文件放在应用程序下并更改应用程序名称,但均无济于事。这似乎是我想念的显而易见的事情。有什么想法吗?

在下面更新一下我的项目结构。它基于 Django 的两个勺子的结构,可以在 cookiecutter-django project 上找到。

base_dir/
 |application/
   |templates/
     |base.html
   |users/
     |views.py
     |model.py
   |...
   |other_apps/
 |config
   |wsgi.py
   |urls.py
   |settings/
     |common.py

【问题讨论】:

  • 你能添加你的项目结构吗?
  • 如果罗伯特在下面回答后我仍然遇到问题,我将更新结构。已经离开电脑一整天了。
  • 我在问题中添加了一些我的项目结构。
  • 试试web: gunicorn <wsgi_app_name>.wsgi
  • 不幸的是,这不起作用,wsgi 驻留在配置中,但我也尝试将 wsgi 移动到应用程序文件夹,但在那里也失败了。

标签: python django heroku cookiecutter-django


【解决方案1】:

你必须让 gunicorn 监听 $PORT 环境变量指定的端口。我做这样的事情:

web: gunicorn -w 4 -b 0.0.0.0:$PORT app:app

我认为您可能正确调用了所有模块。

【讨论】:

  • 我想这就是我需要的。我现在遇到了一些其他的白噪声错误,但堆栈跟踪实际上告诉我一些事情,而不是之前的极其模棱两可的错误。今晚我会再调查一下,让你知道我在哪里。
  • 实际上,我忘记将 -w 开关更改为 1,只是看到 4 个错误而不是 1。不幸的是,我仍然看到与之前此更改相同的错误:/
  • 经过一番挖掘,我发现我的设置是用于生产的,因此本地部署失败,您的回答帮助我解决了这个问题,谢谢!
【解决方案2】:

您的config 目录似乎没有__init__.py 文件。

config 必须是常规的 python 模块/包。

【讨论】:

  • Config 目录确实有一个 init.py 文件。
猜你喜欢
  • 2013-08-22
  • 2021-09-07
  • 1970-01-01
  • 2020-04-07
  • 2011-12-05
  • 2018-10-18
  • 2017-12-01
  • 2020-04-24
  • 2021-06-14
相关资源
最近更新 更多