как сделать изящную перезагрузку uwsgi через скрипт bash?

9

У меня есть приложение Django, которое выполняет сценарий Bash. Мне требуется перезапустить сервер nginx, чтобы я работал, и /etc/init.d/nginx reloadэто прекрасно работает. Я использую restart uwsgiдля uwsgi, но мне нужно сделать изящную перезагрузку вместо жесткого перезапуска сервера.

Как я могу это сделать?


Я в настоящее время работает Баш reload uwsgiфункцию через subprocess.popen. Кажется, что это только перезагрузка процесса, вызывающего подпроцесс, а не всех сайтов, размещенных экземпляром uwsgi. importing uwsgiи uwsgi.reloadкажется, что запуск также влияет только на вызывающий процесс. Есть ли переключатель для uwsgi через python или bash, который позволяет перезапустить все процессы uwsgi

Даррен
источник

Ответы:

0

Вы можете сделать это в Python

import uwsgi
uwsgi.reload()
Майк
источник
uwsgi.reload () работает с перебоями. похоже, он перезагружает сервер до завершения некоторых моих процессов. я запускаю это через приложение django и хочу, чтобы он перезапустил весь сервер.
Даррен
10

SIGHUP

Вы можете перезапустить uWSGI, отправив сигнал SIGHUP процессу uWSGI следующим образом:

kill -HUP <process-id>

Если вы хотите автоматизировать это в bash-скрипте, вы можете сделать так, чтобы uWSGI записал его идентификатор процесса, указав pidfileопцию, например:

--pidfile=/tmp/uwsgi.pid

Затем вы можете перезагрузить процесс:

uwsgi --reload /tmp/uwsgi.pid

сенсорный перезарядка

Вы также можете запустить uWSGI с touch-reloadаргументом, который указывает файл, который при касании вызывает перезагрузку uWSGI:

--touch-reload=/some/file

Затем uWSGI перезагрузится при касании файла:

touch /some/file

Помните, что вы можете перезагрузить uWSGI, только когда он работает в режиме мастер-процесса, но обычно это так.

Дополнительная информация: http://uwsgi-docs.readthedocs.io/en/latest/Management.html#reloading-the-server

gitaarik
источник