Назад | Перейти на главную страницу

Супервизор всегда завершает процесс со статусом выхода 0; неожиданно'

В настоящее время я перестраиваю свой vps, и я хотел бы использовать супервизор для управления своими процессами django gunicorn / wsgi. Дело в том, что супервизор продолжает выходить из процессов:

2010-07-23 14:54:40,575 INFO supervisord started with pid 31391
2010-07-23 14:54:41,582 INFO spawned: 'projectx' with pid 31395
2010-07-23 14:54:41,691 INFO exited: projectx (exit status 0; not expected)
2010-07-23 14:54:42,695 INFO spawned: 'projectx' with pid 31401
2010-07-23 14:54:42,801 INFO exited: projectx (exit status 0; not expected)
2010-07-23 14:54:44,806 INFO spawned: 'projectx' with pid 31404
2010-07-23 14:54:44,912 INFO exited: projectx (exit status 0; not expected)
2010-07-23 14:54:47,917 INFO spawned: 'projectx' with pid 31408
2010-07-23 14:54:48,022 INFO exited: projectx (exit status 0; not expected)
2010-07-23 14:54:49,023 INFO gave up: projectx entered FATAL state, too many start retries too quickly

Это конфигурация, которую я использую:

[program:projectx]
command=/path/to/project/bin/gunicorn_django -c /path/to/project/project/gunicorn.conf.py /path/to/project/project/production.py
user=myuser
autostart=true
autorestart=true

Я уже дважды проверил, и gunicorn_django действительно возвращает статус 0, когда он был создан правильно.

Я пробовал явно добавить exitcodes = 0,2 в конфигурацию, но это тоже не имеет значения. Похоже, что процесс запущен правильно, но руководитель думает, что это не так.

Кто-нибудь знает, как это решить?

Спасибо, Бьорн

Если gunicorn_django демонизирует себя, это не тот вид программы, для управления которым предназначен супервизор. Supervisor ожидает, что его контролируемые программы будут выполняться на переднем плане, чтобы он мог отслеживать, завершились ли они.

Видеть документы супервайзера.

Хорошо, после некоторого недоумения я понял, что это как-то связано с пользователями. Я попытался запустить свои дочерние процессы от имени определенного пользователя. После удаления строки (см. Мою конфигурацию ниже) все работает нормально.

Конфигурация Gunicorn:

bind = "127.0.0.1:3305"
workers = 2

Конфигурация супервизора:

[program:projectx]
command=/path/to/project/bin/gunicorn_django -c /path/to/project/project/gunicorn.conf.py /path/to/project/project/production.py
; set the user here instead of in the gunicorn config.
user=user
autostart=true
autorestart=unexpected
stdout_logfile=/path/to/project/logs/project.log
redirect_stderr=true
exitcodes=1

У меня возникла аналогичная ошибка при попытке запустить демон http под супервизором.

Исправлено удалением старого файла pid: httpd_pid