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

Как остановить uwsgi, если в конфигурации нет pidfile?

Я только что установил uwsgi по pip install uwsgi в виртуальном окружении. В "ini" файле я использовал:

socket = 127.0.0.1:3000
# no pidfile option

И беги uwsgi --ini config.ini

Но как остановить этот экземпляр uwsgi?
uwsgi --stop ... хочет файл pid. Я не могу использовать адрес:

open("127.0.0.1:3000"): No such file or directory [core/io.c line 505]

А если убивает - uwsgi просто возрождается.

ps ax | grep uwsgi
15005 pts/4    S      0:00 /ve/path/bin/uwsgi --ini config.ini
15006 pts/4    S      0:00 /ve/path/bin/uwsgi --ini config.ini
15007 pts/4    S      0:00 /ve/path/bin/uwsgi --ini config.ini

killall -s INT /ve/path/bin/uwsgi

Это известная особенность, что вы не можете завершить uwsgi просто kill. Вторая пуля: http://uwsgi-docs.readthedocs.org/en/latest/ThingsToKnow.html

До uWSGI 2.1 по умолчанию отправка сигнала SIGTERM в uWSGI означает «грубую перезагрузку стека», в то время как соглашение заключается в завершении работы приложения на SIGTERM. Чтобы выключить uWSGI, используйте SIGINT или SIGQUIT. Если вы абсолютно не можете жить с таким неуважением uWSGI к SIGTERM, обязательно включите опцию «умереть в срок». К счастью, этот неправильный выбор был исправлен в uWSGI 2.1.

Как и в первом ответе, в Ubuntu или Debian вы можете просто сделатьsudo killall -9 uwsgi. Хотя я действительно хочу знать, дает ли uwsgi возможность остановить себя.