Попытка запустить приложение Django на Gunicorn локально с помощью Foreman

Я следую руководству по началу работы с Django на Heroku
Когда пытаюсь запустить Приложение Django на Gunicorn с использованием Foreman, я получаю следующую трассировку ошибок:

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 находится в корневом каталоге проекта и содержит:

веб-сайт: gunicorn hepcat_server.wsgi

settings.py находится в каталоге hepcat_server

когда я использую $ python manage.py run_gunicorn
gunicorn успешно запускается, и я вижу страницу Django по умолчанию


person cosmicman66    schedule 06.05.2013    source источник
comment
Взгляните на эту суть — это мой полный журнал того, как я получил учебники DJANGO 1 и 2 для работы с Heroku.   -  person JohnnyLambada    schedule 08.05.2013


Ответы (1)


У меня была такая же проблема, когда я следил за страницей настройки Heroku, которую вы использовали. Я нашел решение на этой странице. . Я скопировал это здесь для потомков:

В корневом каталоге вашего проекта django создайте файл Procfile. затем напишите это в Интернете: sh -c "cd djangoproject && 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.

person Kyle Falconer    schedule 15.04.2015