¿Cómo hacer una recarga uwsgi elegante a través de script bash?

9

Tengo una aplicación django que está ejecutando un script bash. Necesito que el servidor nginx se reinicie, así que ejecuto, lo /etc/init.d/nginx reloadque funciona muy bien. He estado usando restart uwsgipara uwsgi pero necesito hacer una recarga elegante en lugar de reiniciar el servidor.

¿Cómo puedo hacer esto?


Actualmente estoy ejecutando una reload uwsgifunción bash a través de subprocess.popen. Parece que solo se está recargando el proceso que llama al subproceso, no todos los sitios alojados por la instancia de uwsgi. importing uwsgiy la ejecución uwsgi.reloadtambién parece afectar solo el proceso de llamada. ¿Hay un interruptor para uwsgi a través de python o bash que permita reiniciar todo el proceso de uwsgi

Darren
fuente

Respuestas:

0

Puedes hacerlo en python

import uwsgi
uwsgi.reload()
Miguel
fuente
uwsgi.reload () funciona de forma intermitente. parece estar reiniciando el servidor antes de que algunos de mis procesos hayan finalizado. Estoy ejecutando esto a través de una aplicación django y quiero que reinicie todo el servidor.
darren
10

VISTA

Puede reiniciar uWSGI enviando la señal SIGHUP a su proceso uWSGI de la siguiente manera:

kill -HUP <process-id>

Si desea automatizar esto en un script bash, puede hacer que uWSGI escriba su identificación de proceso al proporcionar la pidfileopción, por ejemplo, como:

--pidfile=/tmp/uwsgi.pid

Luego puede volver a cargar el proceso:

uwsgi --reload /tmp/uwsgi.pid

recarga táctil

También puede iniciar uWSGI con el touch-reloadargumento, que especifica un archivo que cuando se toca hace que uWSGI se recargue:

--touch-reload=/some/file

Entonces uWSGI se volverá a cargar cuando toque el archivo:

touch /some/file

Recuerde que solo puede recargar uWSGI cuando se está ejecutando con el modo de proceso maestro, pero ese suele ser el caso.

Más información: http://uwsgi-docs.readthedocs.io/en/latest/Management.html#reloading-the-server

gitaarik
fuente