2013-03-08 1 views
6

Я пытаюсь запустить Gunicorn из Supervisor в системе Ubuntu 12.04. Gunicorn запускает приложение Flask (простой веб-сервис REST, протестированный с встроенным сервером Flask). Я установил Gunicorn путем клонирования GIT repo, пытаясь избежать «apt-get install», потому что он запускает сервер Gunicorn при его установке. Я не хочу, чтобы он работал, он будет работать только Supervisor.Супервизор, не работающий с Gunicorn + Flask

Таким образом, после его установки, если я пытаюсь:

cd /usr/local/bin 
gunicorn my_app:app -c /path/to/gu_config_file 

Gunicorn работает. Тогда я убью его. Запишите файл конфигурации без расширения, потому что расширение '.py' не работает для меня. Поэтому я редактировать методистов конфигурационный файл, как:

[program:gunicorn] 
command=/usr/local/bin/gunicorn my_app:app -c /path/to/.gu_setup 
directory=/usr/local/bin/ 
autostart=true 
autorestart=true 
redirect_stderr=True 

и обновления изменений в Supervisor:

supervisorctl reread 
# gunicorn: changed 
supervisorctl update 
# gunicorn: stopped 
# gunicorn: updated process group 

Обнаруживает изменения в файле и работает для программы Gunicorn. Хорошо, но тогда я пытаюсь запустить его:

supervisorctl start gunicorn 

Получение раздражает:

gunicorn: ERROR (abnormal termination) 

Проверка журнала супервизора:

2013-03-08 13:07:22,378 INFO spawned: 'gunicorn' with pid 3355 
2013-03-08 13:07:22,916 INFO exited: gunicorn (exit status 3; not expected) 
2013-03-08 13:07:23,918 INFO spawned: 'gunicorn' with pid 3361 
2013-03-08 13:07:24,492 INFO exited: gunicorn (exit status 3; not expected) 
2013-03-08 13:07:26,496 INFO spawned: 'gunicorn' with pid 3367 
2013-03-08 13:07:27,078 INFO exited: gunicorn (exit status 3; not expected) 
2013-03-08 13:07:30,085 INFO spawned: 'gunicorn' with pid 3373 
2013-03-08 13:07:30,628 INFO exited: gunicorn (exit status 3; not expected) 
2013-03-08 13:07:31,630 INFO gave up: gunicorn entered FATAL state, too many start retries too quickly 

Я не знаю, что делать прямо сейчас .. . Вы можете мне помочь? Thx много!

EDIT: жаль, что я забыл сказать, что я экспортировали переменную PYTHONPATH как:

export PYTHONPATH=/usr/local/bin:/usr/local/lib/project 

'my_app' в/USR/местные/бен. Путь lib необходим для других модулей. я редактировал также супервизора конфигурационный файл, чтобы указать переменную среды, как:

environment=PYTHONPATH=/usr/local/bin:/usr/local/lib/project/ 

Но не получилось.

EDIT 2: а @robertklep предложить в своем комментарии, это вывод лога:

Traceback (most recent call last): 
    File "/tmp/gunicorn/gunicorn/arbiter.py", line 485, in spawn_worker 
    worker.init_process() 
    File "/tmp/gunicorn/gunicorn/workers/base.py", line 100, in init_process 
    self.wsgi = self.app.wsgi() 
    File "/tmp/gunicorn/gunicorn/app/base.py", line 103, in wsgi 
    self.callable = self.load() 
    File "/tmp/gunicorn/gunicorn/app/wsgiapp.py", line 25, in load 
    return util.import_app(self.app_uri) 
    File "/tmp/gunicorn/gunicorn/util.py", line 369, in import_app 
    __import__(module) 
    File "/usr/local/bin/my_app.py", line 4, in <module> 
    import const 
ImportError: No module named const 
2013-03-08 13:29:35 [3670] [INFO] Worker exiting (pid: 3670) 
2013-03-08 13:29:36 [3665] [INFO] Shutting down: Master 
2013-03-08 13:29:36 [3665] [INFO] Reason: Worker failed to boot. 

модуль 'Const' в/USR/местные/Библиотека/проект ...

ответ

8

Я надеваю «т видеть вас настройки среды в вашем файле конфигурации супервизора:

[program:gunicorn] 
environment=PYTHONPATH=/usr/local/bin:/usr/local/lib/project 
command=/usr/local/bin/gunicorn my_app:app -c /path/to/.gu_setup 
... 

Если это не сработает, попробуйте запустить gunicorn в режиме отладки:

command=/usr/local/bin/gunicorn --debug --log-level debug my_app:app -c /path/to/.gu_setup 

Или пройти путь непосредственно к gunicorn:

command=/usr/local/bin/gunicorn --pythonpath /usr/local/bin,/usr/local/lib/project my_app:app -c /path/to/.gu_setup 

EDIT: gunicorn-х --pythonpath испорчен, то можно пройти только один каталог:

command=/usr/local/bin/gunicorn --pythonpath /usr/local/lib/project my_app:app -c /path/to/.gu_setup 
+0

Да, я сделал это и редактировал свой вопрос в то же время, когда вы ответили мне ... извините! Я делаю то, что ты сказал, жди его! :) –

+0

Так говорит мне, что он не может найти модуль 'const', но он находится в/usr/local/lib/project, добавлен в среду в конфигурационный файл Supervisor ... –

+0

См. Мое правление о прохождении пути непосредственно к gunicorn. – robertklep

3

Это не обязательно проходят --pythonpath ,Если вы работаете virtuaenv, вы добавляете, где находится стрельба. Пример:

command=/home/virtualenv/bin/gunicorn application:app -c /home/virtualenv/deploy/gunicorn.conf.py 

И каталог когда колба код, пример:

directory=/home/virtualenv/myapp 

Помните пользователь корень!

user=root