6

我正在尝试在 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

这给了我这个错误:

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

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

web: gunicorn_django -b 0.0.0.0:\$PORT -w 9 -k gevent --max-requests 250 --preload my_project.settings

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

ImportError: Could not import settings

最后,我只是将其设置为settings

web: gunicorn_django -b 0.0.0.0:\$PORT -w 9 -k gevent --max-requests 250 --preload settings

但现在我得到这个错误:

Error: django project not found

我的 Django 项目的设置方式是该settings.py文件位于 repo 的父目录中——我没有另一个目录下的 Django 项目。它与 virtualenv 和 git 文件处于同一级别。那会是个问题吗?我确定我在做一些简单的错误 - 任何帮助将不胜感激。


如果我按照 Heroku here的说明将 Procfile 更改为:

web: gunicorn hellodjango.wsgi -b 0.0.0.0:$PORT

什么都没有发生——日志中没有错误,但没有运行任何进程,应用程序看起来就像死在水中一样。

4

4 回答 4

15

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

看起来我们都时不时地成为盲目复制粘贴的受害者,但在你(和我)的辩护中,看起来实际上没有打开 *.wsgi 文件,这只是你向 gunicorn 发出你想要它的信号的方式运行你的 django 项目。

于 2012-05-19T00:32:02.533 回答
4

我遇到了和你一样的问题。我最终能够让它工作的方式是使用 django app gunicorn。

我将 gunicorn 添加到 django settings.py

'gunicorn',

然后我将它用作我的 Procfile 中的 Web 条目。

web: python manage.py run_gunicorn -b 0.0.0.0:\$PORT -w 9 -k gevent --max-requests 250 --preload

如果您使用与我不同的目录结构,您可能需要更改 .manage.py。我的应用在 /app 中,我的 python 路径也是 /app。

于 2012-10-12T15:46:05.197 回答
2

我遇到了这个问题,不得不直接指向 python 路径,然后设置设置参考

最后我的 Procfile 看起来像这样:

web: gunicorn_django --pythonpath=/app/project --settings=settings

我必须运行heroku run它来显示 env 变量,这就是我能够找到/app我添加到我的项目名称的地方。

于 2013-03-04T21:56:47.577 回答
0

requirements.txt根文件夹中是否有一个(包含单词django),以及一个settings.py?这些似乎是 Django 应用程序检测的要求,如此所述。

于 2012-05-10T07:37:02.630 回答