gunicorn ERROR (ненормальное завершение)

Я запускаю скрипт ткани, который, среди прочего, должен перезапустить пушку на сервере Ubuntu, команда ниже:

supervisorctl status projectname:gunicorn | sed "s/.*[pid ]\([0-9]\+\)\,.*/\1/" | xargs kill -HUP

проблема в том, что gunicorn, похоже, не работает в первую очередь, поэтому процесс нельзя убить, я подключился по ssh к экземпляру amazon ec2 и запустил

sudo supervisorctl restart projectname:gunicorn' 

и я получаю ответ об ошибке, который говорит:

имя проекта: пушка: ОШИБКА (не работает) имя проекта: пушка ОШИБКА (ненормальное завершение)

поэтому я попытался запустить gunicorn, запустив

sudo supervisorctl start projectname:gunicorn

и ошибка говорит

'имя_проекта: пушка: Ошибка (ненормальное завершение)'

Так что мне нужен ганикорн для запуска, и у меня проблемы с достижением этого.

Я также проверил журнал Gunicorn и текст ниже, ниже приведен соответствующий вывод.

2014-01-17 14:58:14 [12260] [INFO] Starting gunicorn 0.14.3
2014-01-17 14:58:14 [12260] [INFO] Listening at: http://127.0.0.1:9000 (12260)
2014-01-17 14:58:14 [12260] [INFO] Using worker: sync
2014-01-17 14:58:14 [12263] [INFO] Booting worker with pid: 12263
2014-01-17 14:58:14 [12264] [INFO] Booting worker with pid: 12264
2014-01-17 14:58:14 [12265] [INFO] Booting worker with pid: 12265
2014-01-17 14:58:14 [12266] [INFO] Booting worker with pid: 12266
2014-01-17 14:58:14 [12263] [INFO] Worker exiting (pid: 12263)
2014-01-17 14:58:14 [12264] [INFO] Worker exiting (pid: 12264)
2014-01-17 14:58:14 [12265] [INFO] Worker exiting (pid: 12265)
2014-01-17 14:58:14 [12266] [INFO] Worker exiting (pid: 12266)
Traceback (most recent call last):
File "/opt/screening/env/bin/gunicorn_django", line 9, in <module>
load_entry_point('gunicorn==0.14.3', 'console_scripts', 'gunicorn_django')()
File "/opt/compliance_engine/env/local/lib/python2.7/site-packages/gunicorn/app/djangoapp.py", line 129, in run
DjangoApplication("%prog [OPTIONS] [SETTINGS_PATH]").run()
File "/opt/compliance_engine/env/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 129, in run
Arbiter(self).run()
File "/opt/compliance_engine/env/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 184, in run
self.halt(reason=inst.reason, exit_status=inst.exit_status)
File "/opt/compliance_engine/env/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 279, in halt
self.stop()
File "/opt/compliance_engine/env/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 327, in stop
self.reap_workers()
File "/opt/compliance_engine/env/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 413, in reap_workers
raise HaltServer(reason, self.WORKER_BOOT_ERROR)
gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>

также, вот файл conf

[program:gunicorn]
command=/opt/screening/env/bin/gunicorn_django --pythonpath . ce.settings -w 4 --bind             127.0.0.1:9000
directory=/opt/screening/repository
user=www-data
autostart=true
autorestart=true
stdout_logfile=/opt/screening/logs/gunicorn.log
redirect_stderr=true

[program:celeryd]
command=/opt/screening/env/bin/python manage.py celeryd --autoscale=16,2 -E -l INFO --pidfile=/opt/screening/tmp/pids/celeryd.pid
directory=/opt/screening/repository
user=www-data
autostart=true
autorestart=true
stdout_logfile=/opt/screening/logs/celeryd.log
redirect_stderr=true

[program:celerybeat]
command=/opt/screening/env/bin/python manage.py celerybeat -l INFO --    schedule=/opt/screening/tmp/celerybeat-schedule --    pidfile=/opt/screening/tmp/pids/celerybeat.pid
directory=/opt/screening/repository
user=www-data
autostart=true
autorestart=true
stdout_logfile=/opt/screening/logs/celerybeat.log
redirect_stderr=true

[program:celerycam]
command=/opt/screening/env/bin/python manage.py celerycam --    pidfile=/opt/screening/tmp/pids/celerycam.pid
directory=/opt/screening/repository
user=www-data
autostart=true
autorestart=true
stdout_logfile=/opt/screening/logs/celerycam.log
redirect_stderr=true

[group:screening]
programs=gunicorn,celeryd,celerybeat,celerycam

Любые идеи? Я понимаю, что это много текста, любые подсказки или указатели будут высоко оценены

Спасибо за чтение,

редактировать:

запустил unicorn самостоятельно, активировал виртуальную среду и запустил

python manage.py run_gunicorn

терминал напечатал вывод ниже

2014-01-19 22:02:35 [14735] [INFO] Starting gunicorn 0.14.3
2014-01-19 22:02:35 [14735] [INFO] Listening at: http://127.0.0.1:8000 (14735)
2014-01-19 22:02:35 [14735] [INFO] Using worker: sync
2014-01-19 22:02:35 [14742] [INFO] Booting worker with pid: 14742

также запустил сервер запуска в virtualenv:

python manage.py runserver 7000
Validating models...

0 errors found
Django version 1.3, using settings 'ce.settings'
Development server is running at http://127.0.0.1:7000/
Quit the server with CONTROL-C.

так что явных ошибок нет

редактировать 2:

поговорили об этом с парой других людей, и им посоветовали посмотреть разрешения для журналов пушки, вот они:

-rw-rw-r-- 1 www-data ubuntu    3270504 2014-01-19 23:23 gunicorn.log

пользователь www-data соответствует тому, который установлен в конфигурации супервизора

edit 3: я снова запустил команду gunicorn, но на этот раз добавил информацию о журнале:

gunicorn_django --pythonpath . ce.settings -w 4 --bind             127.0.0.1:9000 --debug --log-level debug

и получил следующее сообщение об ошибке:

Traceback (most recent call last):
  File "/opt/screening/env/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 453, in spawn_worker
    worker.init_process()
  File "/opt/screening/env/local/lib/python2.7/site-packages/gunicorn/workers/base.py", line 99, in init_process
    self.wsgi = self.app.wsgi()
  File "/opt/screening/env/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 101, in wsgi
    self.callable = self.load()
  File "/opt/screening/env/local/lib/python2.7/site-packages/gunicorn/app/djangoapp.py", line 87, in load
mod = util.import_module("gunicorn.app.django_wsgi")
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
  File "/opt/screening/env/local/lib/python2.7/site-packages/gunicorn/app/django_wsgi.py", line 18, in <module>
    from django.core.management.validation import get_validation_errors
  File "/opt/screening/env/local/lib/python2.7/site-packages/django/core/management/validation.py", line 3, in <module>
    from django.contrib.contenttypes.generic import GenericForeignKey, GenericRelation
  File "/opt/screening/env/local/lib/python2.7/site-packages/django/contrib/contenttypes/generic.py", line 6, in <module>
    from django.db import connection
  File "/opt/screening/env/local/lib/python2.7/site-packages/django/db/__init__.py", line 14, in <module>
    if not settings.DATABASES:
  File "/opt/screening/env/local/lib/python2.7/site-packages/django/utils/functional.py", line 276, in __getattr__
    self._setup()
  File "/opt/screening/env/local/lib/python2.7/site-packages/django/conf/__init__.py", line 42, in _setup
    self._wrapped = Settings(settings_module)
  File "/opt/screening/env/local/lib/python2.7/site-packages/django/conf/__init__.py", line 89, in __init__
    raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
ImportError: Could not import settings 'ce.settings' (Is it on sys.path?): No module named ce.settings

2014-01-20 09:14:22 [31830] [INFO] Worker exiting (pid: 31830)
Traceback (most recent call last):
  File "/opt/screening/env/bin/gunicorn_django", line 9, in <module>
load_entry_point('gunicorn==0.14.3', 'console_scripts', 'gunicorn_django')()
  File "/opt/screening/env/local/lib/python2.7/site-packages/gunicorn/app/djangoapp.py", line 129, in run
    DjangoApplication("%prog [OPTIONS] [SETTINGS_PATH]").run()
  File "/opt/screening/env/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 129, in run
    Arbiter(self).run()
  File "/opt/screening/env/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 184, in run
    self.halt(reason=inst.reason, exit_status=inst.exit_status)
  File "/opt/screening/env/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 279, in halt
    self.stop()
  File "/opt/screening/env/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 327, in stop
    self.reap_workers()
  File "/opt/screening/env/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 413, in reap_workers
    raise HaltServer(reason, self.WORKER_BOOT_ERROR)
gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>

так что кажется, что важная информация такова:

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

Мои настройки находятся в каталоге настроек, и файл инициализации присутствует, так что проблема не в этом. Также приложение запускается на сервере запуска, поэтому файл настроек должен быть доступен для импорта.


person Aesthete    schedule 17.01.2014    source источник
comment
Можешь выложить конфиг пушкикорна? Также вы можете запустить gunicorn отдельно и посмотреть, что произойдет? У вас там тоже работает сельдерей (ваша конфигурация супервайзера), что наводит меня на мысль, что он может быть привязан к тому же порту, что и gunicorn.   -  person Rico    schedule 17.01.2014
comment
Я запустил gunicorn и runserver, также добавил эту информацию в исходный пост, я думал, что настройки для gunicorn находятся в файле конфигурации supervior, который я вставил выше? Есть ли еще один, который мне нужно искать?   -  person Aesthete    schedule 20.01.2014
comment
Попробуйте удалить следующие разделы из вашего supervisor.conf [program:celeryd] [program:celerybeat] [program:celerycam] [group:screening] Я подозреваю, что они конфликтуют с gunicorn.   -  person Rico    schedule 20.01.2014
comment
Я попробую это сейчас... эти настройки были там в течение долгого времени, и хотя сайт работает с этими настройками   -  person Aesthete    schedule 20.01.2014
comment
Я удалил упомянутые вами разделы, что не решило проблему   -  person Aesthete    schedule 20.01.2014
comment
Я снова запустил gunicorn, используя отладку --debug --log-level и получил больше информации, обновил исходный пост.   -  person Aesthete    schedule 20.01.2014
comment
решил проблему, я думаю, отредактировал исходный пост   -  person Aesthete    schedule 20.01.2014


Ответы (1)


(На вопрос ответил OP в редактировании вопроса. Преобразован в ответ вики сообщества. См. Вопрос без ответов, но проблема решена в комментариях (или дополнена в чате) )

ОП написал:

Проблема решена (я думаю)

согласно информации в этой ссылке https://stackoverflow.com/a/19256794/2049067 я добавил проект в путь питона

export PYTHONPATH=:/my/path

затем снова запустил команду gunicorn:

gunicorn_django --pythonpath . ce.settings -w 4 --bind             127.0.0.1:9000 --debug --log-level debug

и gunicorn запущен и работает, и сайт доступен, я вышел из ssh и все (по-видимому) все еще работает. Я также должен добавить, что перед тем, как установить pythonpath, я изменил владельца в журнале gunicorn:

sudo chown -R www-data:www-data gunicorn.log

Хотя не знаю помогло ли

и видя, как приложение работает годами, я не знаю, как проект был удален из pythonpath

person Community    schedule 28.01.2015
comment
Решение состояло в том, чтобы добавить жестко заданный путь Python в конфигурацию. Это необходимо, потому что вы можете использовать виртуальные среды, а супервизор не будет использовать VirtualEnv по умолчанию. - person Tim Reilly; 30.06.2016