Я запускаю сайт 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 обнаружит изменение и перезапустит эту единственную службу.