Mam aplikację django, która wykonuje skrypt bash. Wymagam ponownego uruchomienia serwera nginx, więc działam, /etc/init.d/nginx reload
co działa świetnie. Używam restart uwsgi
do uwsgi, ale muszę wykonać płynne przeładowanie zamiast twardego restartu serwera.
W jaki sposób mogę to zrobić?
Ja obecnie uruchomiony bash reload uwsgi
funkcji dzięki subprocess.popen
. Wydaje się, że przeładowuje tylko proces wywołujący podproces, a nie wszystkie witryny hostowane przez instancję uwsgi. importing uwsgi
i działa uwsgi.reload
wydaje się również tylko efekt procesu wywołującego. Czy istnieje przełącznik dla uwsgi poprzez python lub bash, który pozwala zrestartować cały proces uwsgi
SIGHUP
Możesz ponownie uruchomić uWSGI, wysyłając sygnał SIGHUP do procesu uWSGI w następujący sposób:
Jeśli chcesz zautomatyzować to w skrypcie bash, możesz poprosić uWSGI o zapisanie jego identyfikatora procesu poprzez podanie
pidfile
opcji, na przykład:Następnie możesz ponownie załadować proces poprzez:
przeładowanie dotykowe
Możesz również uruchomić uWSGI z
touch-reload
argumentem, który określa plik, który po dotknięciu powoduje ponowne załadowanie uWSGI:Następnie uWSGI przeładuje się po dotknięciu pliku:
Pamiętaj, że możesz przeładować uWSGI tylko wtedy, gdy jest uruchomiony w trybie procesu głównego, ale zwykle tak jest.
Więcej informacji: http://uwsgi-docs.readthedocs.io/en/latest/Management.html#reloading-the-server
źródło