尝试使用Foreman在Gunicorn上运行Django应用程序

时间:2013-05-06 07:39:12

标签: django heroku virtualenv gunicorn foreman

我正在关注Getting Started with Django on Heroku tutorial
当我试图使用Foreman在Gunicorn上运行Django应用程序时,我得到下一个错误追溯:

09:23:33 web.1  | started with pid 7012  
09:23:34 web.1  | 2013-05-06 09:23:34 [7012] [INFO] Starting gunicorn 0.17.2  
09:23:34 web.1  | 2013-05-06 09:23:34 [7012] [INFO] Listening at: `http://0.0.0.0:5000` (7012)  
09:23:34 web.1  | 2013-05-06 09:23:34 [7012] [INFO] Using worker: sync  
09:23:34 web.1  | 2013-05-06 09:23:34 [7015] [INFO] Booting worker with pid: 7015  
09:23:34 web.1  | 2013-05-06 09:23:34 [7015] [ERROR] Exception in worker process:  
09:23:34 web.1  | Traceback (most recent call last):  
09:23:34 web.1  |   File "/usr/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 485, in spawn_worker  
09:23:34 web.1  |     worker.init_process()  
09:23:34 web.1  |   File "/usr/local/lib/python2.7/site-packages/gunicorn/workers/base.py", line 100, in init_process  
09:23:34 web.1  |     self.wsgi = self.app.wsgi()  
09:23:34 web.1  |   File "/usr/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 103, in wsgi  
09:23:34 web.1  |     self.callable = self.load()  
09:23:34 web.1  |   File "/usr/local/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 25, in load  
09:23:34 web.1  |     return util.import_app(self.app_uri)  
09:23:34 web.1  |   File "/usr/local/lib/python2.7/site-packages/gunicorn/util.py", line 372, in import_app  
09:23:34 web.1  |     __import__(module)  
09:23:34 web.1  |   File "/Users/cosmicMan66/DjangoDev/hepcat_server/hepcat_server/wsgi.py", line 27, in <module>  
09:23:34 web.1  |     from django.core.wsgi import get_wsgi_application  
09:23:34 web.1  | ImportError: No module named django.core.wsgi  
09:23:34 web.1  | Traceback (most recent call last):  
09:23:34 web.1  |   File "/usr/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 485, in spawn_worker  
09:23:34 web.1  |     worker.init_process()  
09:23:34 web.1  |   File "/usr/local/lib/python2.7/site-packages/gunicorn/workers/base.py", line 100, in init_process  
09:23:34 web.1  |     self.wsgi = self.app.wsgi()  
09:23:34 web.1  |   File "/usr/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 103, in wsgi  
09:23:34 web.1  |     self.callable = self.load()  
09:23:34 web.1  |   File "/usr/local/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 25, in load  
09:23:34 web.1  |     return util.import_app(self.app_uri)  
09:23:34 web.1  |   File "/usr/local/lib/python2.7/site-packages/gunicorn/util.py", line 372, in import_app  
09:23:34 web.1  |     __import__(module)  
09:23:34 web.1  |   File "/Users/cosmicMan66/DjangoDev/hepcat_server/hepcat_server/wsgi.py", line 27, in <module>  
09:23:34 web.1  |     from django.core.wsgi import get_wsgi_application  
09:23:34 web.1  | ImportError: No module named django.core.wsgi  
09:23:34 web.1  | 2013-05-06 09:23:34 [7015] [INFO] Worker exiting (pid: 7015)  
09:23:35 web.1  | 2013-05-06 09:23:35 [7012] [INFO] Shutting down: Master  
09:23:35 web.1  | 2013-05-06 09:23:35 [7012] [INFO] Reason: Worker failed to boot.  
09:23:35 web.1  | exited with code 3  
09:23:35 system | sending SIGTERM to all processes  
SIGTERM received

Procfile位于项目的根目录中,包含:

  

web:gunicorn hepcat_server.wsgi

settings.py位于hepcat_server目录

当我使用$ python manage.py run_gunicorn时 gunicorn成功启动,我看到默认的Django页面

1 个答案:

答案 0 :(得分:1)

我在使用您正在使用的Heroku设置页面时遇到了同样的问题。我在this page找到了解决方案。我在这里复制了后人:

  

在django项目的根目录中,创建Procfile文件。   然后把它写在网上:sh -c“cd djangoproject&amp;&amp; gunicorn   djangoproject.wsgi“。然后创建另一个名为.env的文件   位置,写入DJANGO_SETTINGS_MODULE = djangoproject.settings,   这将帮助您设置所需的env变量   在djangoproject.wsgi模块中设置。跑步工头开始测试。   这样做应该是自我解释的,给出下面的问题。

     

部署时,在heroku中创建应用程序后,设置   使用此命令调用env变量heroku config:set   DJANGO_SETTINGS_MODULE = djangoproject.settings,这是因为   部署在文件djangoproject / djangoproject / wsgi.py之前失败   跑了。

请记住将“djangoproject”替换为django项目的名称。