Eu tenho um aplicativo django que está executando um script bash. Eu preciso que o servidor nginx seja reiniciado, então eu corro o /etc/init.d/nginx reload
que funciona muito bem. Estou usando o restart uwsgi
uwsgi, mas preciso fazer uma recarga normal em vez de uma reinicialização do servidor rígido.
Como posso fazer isso?
Atualmente, estou executando uma reload uwsgi
função bash subprocess.popen
. Parece estar apenas recarregando o processo que está chamando o subprocesso, nem todos os sites sendo hospedados pela instância do uwsgi. importing uwsgi
e a execução uwsgi.reload
também parece afetar apenas o processo de chamada. Existe uma opção para o uwsgi através de python ou bash que permite reiniciar todos os processos do uwsgi
SIGHUP
Você pode reiniciar o uWSGI enviando o sinal SIGHUP para o seu processo uWSGI da seguinte maneira:
Se você deseja automatizar isso em um script bash, pode fazer com que o uWSGI anote seu ID de processo fornecendo a
pidfile
opção, por exemplo, como:Em seguida, você pode recarregar o processo:
recarregar com toque
Você também pode iniciar o uWSGI com o
touch-reload
argumento, que especifica um arquivo que, quando tocado, faz com que o uWSGI seja recarregado:Em seguida, o uWSGI será recarregado quando você tocar no arquivo:
Lembre-se de que você só pode recarregar o uWSGI quando estiver em execução com o modo de processo principal, mas geralmente é esse o caso.
Mais informações: http://uwsgi-docs.readthedocs.io/en/latest/Management.html#reloading-the-server
fonte