Задать вопрос
@pcdesign

Почему не запускается gunicorn?

Пытаюсь сделать инетмагазин с использованием mezzanine и Cartridge
Все идет хорошо:
virtualenv env
. env/bin/activate
pip install -U cartridge
mezzanine-project -a cartridge project
cd project/
python manage.py createdb --noinput


И даже запускается:
python manage.py runserver


              .....
          _d^^^^^^^^^b_
       .d''           ``b.
     .p'                `q.
    .d'                   `b.
   .d'                     `b.   * Mezzanine 3.1.10
   ::                       ::   * Django 1.6.8
  ::    M E Z Z A N I N E    ::  * Python 3.4.1
   ::                       ::   * SQLite 3.6.20
   `p.                     .q'   * Linux 2.6.32-504.el6.x86_64
    `p.                   .q'
     `b.                 .d'
       `q..          ..p'
          ^q........p^


Дальше пытаюсь задеплоить проект:

gunicorn wsgi

Он стартует, но при обращении к порту 8000.
Получаю следующую ошибку:

Error handling request
Traceback (most recent call last):
  File "/home/test/env/lib/python3.4/site-packages/django/conf/__init__.py", line 128, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/home/test/env/lib/python3.4/importlib/__init__.py", line 109, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 2254, in _gcd_import
  File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
  File "<frozen importlib._bootstrap>", line 2212, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 2254, in _gcd_import
  File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
  File "<frozen importlib._bootstrap>", line 2224, in _find_and_load_unlocked
ImportError: No module named 'project'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/test/env/lib/python3.4/site-packages/gunicorn/workers/sync.py", line 93, in handle
    self.handle_request(listener, req, client, addr)
  File "/home/test/env/lib/python3.4/site-packages/gunicorn/workers/sync.py", line 134, in handle_request
    respiter = self.wsgi(environ, resp.start_response)
  File "/home/test/env/lib/python3.4/site-packages/django/core/handlers/wsgi.py", line 187, in __call__
    self.load_middleware()
  File "/home/test/env/lib/python3.4/site-packages/django/core/handlers/base.py", line 44, in load_middleware
    for middleware_path in settings.MIDDLEWARE_CLASSES:
  File "/home/test/env/lib/python3.4/site-packages/django/conf/__init__.py", line 54, in __getattr__
    self._setup(name)
  File "/home/test/env/lib/python3.4/site-packages/django/conf/__init__.py", line 49, in _setup
    self._wrapped = Settings(settings_module)
  File "/home/test/env/lib/python3.4/site-packages/django/conf/__init__.py", line 132, in __init__
    % (self.SETTINGS_MODULE, e)
ImportError: Could not import settings 'project.settings' (Is it on sys.path? Is there an import error in the settings file?): No module named 'project'
  • Вопрос задан
  • 6465 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@pcdesign Автор вопроса
Проблема решается добавлением 2х строчек в файл wsgi.py

#####################
from __future__ import unicode_literals

import os
import sys
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, os.path.abspath(os.path.join(PROJECT_ROOT, "..")))

settings_module = "%s.settings" % PROJECT_ROOT.split(os.sep)[-1]
os.environ.setdefault("DJANGO_SETTINGS_MODULE", settings_module)

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
#####################

Уж не знаю на сколько это корректно, но работает.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@xAockd
Наступил на те же грабли, проблема получается в том что gunicorn не знает где лежат модули.
Тоесть нужно модулями польховатся либо import {module_name}.{module}
в импортах и везде.

Либо написать sys.path.append(PROJECT_ROOT) пробовал оба варианта, и они работают. Долго не мог понять в чем причина.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы