在Heroku上为Django配置gunicorn

tch*_*ore 5 python django heroku gunicorn

我正在尝试在Heroku上设置一个测试Django项目.遵循这里的建议和Heroku入门我试图使用gunicorn而不是Django开发服务器.

这是我第一次尝试Procfile:

web: gunicorn_django --workers=4 --bind=0.0.0.0:$PORT my_project/settings.py
worker: python my_project/manage.py celeryd -E -B --loglevel=INFO
Run Code Online (Sandbox Code Playgroud)

这给了我这个错误:

ImportError: Could not import settings 'settings.py' (Is it on sys.path?): No module named py
Run Code Online (Sandbox Code Playgroud)

我决定采取不同的方式并遵循这里的建议.现在我的Procfile看起来像这样:

web: gunicorn_django -b 0.0.0.0:\$PORT -w 9 -k gevent --max-requests 250 --preload my_project.settings
Run Code Online (Sandbox Code Playgroud)

(我还更新了我的需求文件以包含gevent.)它给了我同样的错误:

ImportError: Could not import settings
Run Code Online (Sandbox Code Playgroud)

最后,我把它设置为settings:

web: gunicorn_django -b 0.0.0.0:\$PORT -w 9 -k gevent --max-requests 250 --preload settings
Run Code Online (Sandbox Code Playgroud)

但是现在我收到了这个错误:

Error: django project not found
Run Code Online (Sandbox Code Playgroud)

我的Django项目的设置方式是settings.py文件位于repo的父目录中 - 我没有Django项目在另一个目录下.它与virtualenv和git文件处于同一级别.那会是个问题吗?我确信我做的事情很简单 - 任何帮助都会非常感激.


如果我按照从Heroku的说明这里并更改Procfile这样:

web: gunicorn hellodjango.wsgi -b 0.0.0.0:$PORT
Run Code Online (Sandbox Code Playgroud)

没有任何事情发生 - 日志中没有错误,但没有进行任何程序,应用程序只是出现在水中.

J C*_*J C 14

我刚遇到同样的问题.在您从Heroku指南中复制的proc文件中,更改hellodjango.wsgiyourproject.wsgi

看起来我们都是偶尔盲目复制粘贴的受害者,但是在你(和我的)防守中,看起来没有*.wsgi文件实际上被打开了,这就是你向枪杀的信号,你想要它运行你的django项目.

  • 你实际上是在指定Python模块`yourproject/wsgi.py`. (13认同)