Как использовать приложение supervisor FO start/stop uWSGI?

Я использую супервизор для запуска приложения uWSGI. Почему приложение uWSGI не всегда останавливается после остановки супервизора? конфигурация супервизора:

[program:test]
autostart = true
user=root
command=uwsgi --master --workers  5 --disable-logging --socket 127.0.0.1:8888
--module web --callable app
priority=1
redirect_stderr=true
stdout_logfile = /data/log

4 ответов


по умолчанию супервизор отправляет SIGTERM на остановку. SIGTERM в uWSGI означает "жестокая перезагрузка".

вы должны изменить его, чтобы выйти или INT:

stopsignal=выход

должно быть достаточно

другой подход (не рекомендуется) добавляет --die-on-term в командную строку uWSGI, чтобы изменить его поведение по умолчанию


Если вы используете " processes = # "в своей конфигурации uwsgi, вы также должны использовать"master = true". Если нет, инспектор убьет только одного из рабочих.

затем:

/ etc/supervisor / conf.d / app.conf

stopsignal = QUIT

/ etc/uwsgi / app.ini

processes = 4
master = true

    руководитель проекта конфиг

    добавить stopsignal=INT

  1. файл конфигурации проекта uwsgi

    удалить daemonize=xxx.log отключить режим демона


Если вы используете свой UWSGI с мастером и рабочими, вам нужно добавить в свой

stopasgroup=false
killasgroup=false

или же независимо от того, что остановка uwsgi будет порождать больше мастера, а также работников.