Когда мой сервер (CentOS 7, размещенный на бродячей виртуальной машине) перезагружается, мое приложение Python Flask (обслуживаемое Gunicorn с использованием nginx в качестве обратного прокси) выдает внутренние ошибки сервера (согласно трассировкам стека, которые я получаю, оно не может найти шаблонные файлы HTML даже ...) до тех пор, пока sudo supervisorctl reload
выпущен. После этого приложение работает нормально, и у меня все в порядке, но теперь это не годится, не так ли?
Я подозреваю, что это состояние гонки (может быть, между супервизором и пулеметчиком?). Я пробовал добавить сон в command
в конкретной программе .ini
файл, но это ничего не помогло.
Кто-нибудь еще сталкивался с чем-то подобным? Если нет, то кто-нибудь знает, как отложить запуск всей утилиты супервизора (а не только одной конкретной программы)?
Для справки вот что содержимое моего .ini
файл выглядит так:
[program:test]
command=/bin/gunicorn -b localhost:8000 -w 2 the_app:app
directory=/var/www/test
user=vagrant
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
Опять же, это работает нормально после перезагрузки супервизора, он просто не запускается правильно (предположительно из-за какого-то состояния гонки).
Для полноты: добавление условия сна вызвало .ini
файл, чтобы он выглядел так:
[program:test]
command=bash -c "sleep 10 && exec /bin/gunicorn -b localhost:8000 -w 2 the_app:app"
directory=/var/www/test
user=vagrant
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
Помимо того, что проблема не решена (смеется), это кажется грязным, поэтому я решительно предпочитаю не делать что-то подобное.
Заранее благодарим за любые рекомендации.