У меня есть приложение Django, которое выполняет сценарий Bash. Мне требуется перезапустить сервер nginx, чтобы я работал, и /etc/init.d/nginx reload
это прекрасно работает. Я использую restart uwsgi
для uwsgi, но мне нужно сделать изящную перезагрузку вместо жесткого перезапуска сервера.
Как я могу это сделать?
Я в настоящее время работает Баш reload uwsgi
функцию через subprocess.popen
. Кажется, что это только перезагрузка процесса, вызывающего подпроцесс, а не всех сайтов, размещенных экземпляром uwsgi. importing uwsgi
и uwsgi.reload
кажется, что запуск также влияет только на вызывающий процесс. Есть ли переключатель для uwsgi через python или bash, который позволяет перезапустить все процессы uwsgi
SIGHUP
Вы можете перезапустить uWSGI, отправив сигнал SIGHUP процессу uWSGI следующим образом:
Если вы хотите автоматизировать это в bash-скрипте, вы можете сделать так, чтобы uWSGI записал его идентификатор процесса, указав
pidfile
опцию, например:Затем вы можете перезагрузить процесс:
сенсорный перезарядка
Вы также можете запустить uWSGI с
touch-reload
аргументом, который указывает файл, который при касании вызывает перезагрузку uWSGI:Затем uWSGI перезагрузится при касании файла:
Помните, что вы можете перезагрузить uWSGI, только когда он работает в режиме мастер-процесса, но обычно это так.
Дополнительная информация: http://uwsgi-docs.readthedocs.io/en/latest/Management.html#reloading-the-server
источник