як зробити витончене перезавантаження uwsgi за допомогою bash script?


9

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

Як я можу це зробити?


Зараз я виконую reload uwsgiфункцію bash subprocess.popen. Схоже, це лише перезавантаження процесу, який викликає підпроцес не на всіх сайтах, розміщених екземпляром uwsgi. importing uwsgiі працює, uwsgi.reloadздається, також впливає лише на процес виклику. Чи є перемикач для uwsgi через python або bash, що дозволяє перезапустити всі процеси uwsgi

Відповіді:


0

Ви можете це зробити в python

import uwsgi
uwsgi.reload()

uwsgi.reload () працює з перервами. здається, це перезапуск сервера до завершення деяких моїх процесів. Я запускаю це через додаток django і хочу, щоб він перезапустив весь сервер.
Даррен

10

ЗАРАЗ

Ви можете перезапустити uWSGI, надіславши сигнал SIGHUP у ваш процес uWSGI так:

kill -HUP <process-id>

Якщо ви хочете автоматизувати це за допомогою bash-скрипту, ви можете змусити uWSGI записати його ідентифікатор процесу, надавши pidfileпараметр, наприклад:

--pidfile=/tmp/uwsgi.pid

Потім ви можете перезавантажити процес:

uwsgi --reload /tmp/uwsgi.pid

touch-reload

Ви також можете запустити 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.