Подтвердить что ты не робот

Как использовать супервизор для запуска/остановки приложения 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
4b9b3361

Ответ 1

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

Вы должны изменить его на QUIT или INT:

stopsignal = QUIT

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

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

Ответ 2

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

Тогда:

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

stopsignal = QUIT

/etc/uwsgi/app.ini

processes = 4
master = true

Ответ 3

  • файл конфигурации супервизора проекта

    добавить stopsignal=INT

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

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