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

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

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

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


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

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

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

import uwsgi
uwsgi.reload()