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

Перезапустите вассала Django / uWSGI в режиме императора uWSGI

Я запускаю сайт django, используя uWSGI в режиме императора. Я обнаружил, что прикосновение к файлу uwsgi.ini для конкретного приложения действительно заставляет процесс императора перезагрузить этого вассала (согласно файлу журнала), что перезагрузки недостаточно, чтобы принять изменения. В частности, изменения в файле .env, используемом для настройки сайта django.

Если я перемещу файл uwsgi.ini для конкретного приложения из папки вассалов и обратно, он будет работать. Предположительно потому, что процесс императора убивает вассалов, когда файл .ini отсутствует, и перезапускает их, когда файл снова появляется. Также можно перезапустить uwsgi emperor с помощью systemd.

Я бы предпочел не перезапускать процесс emperor, и процесс перемещения ini-файла кажется ужасно неуклюжим.

Каков правильный способ перезапустить один сайт Django за Emperor и при этом сохранить изменения в настройках сайта?

/etc/uwsgi/emperor.ini

[uwsgi]
emperor = /etc/uwsgi/vassals
uid = www-data
gid = www-data
limit-as = 1024
logto = /tmp/uwsgi.log

/etc/uwsgi/vassals/demo-app.ini

[uwsgi]
chdir=/home/demo-app/demo-app
virtualenv=/home/demo-app/.venv
module=demo_app.wsgi

master = true
processes = 2

socket = 127.0.0.1:1111
chmod-socket = 664
vacuum = true

Чтобы перезапустить одного вассала, просто коснитесь файла

# touch /etc/uwsgi/vassals/demo-app.ini

Uwsgi обнаружит изменение и перезапустит эту единственную службу.