Você pode fazer isso em python
import uwsgi
uwsgi.reload()
Eu tenho um aplicativo django que está executando um script bash.
Eu preciso que o servidor nginx reinicie, então eu corro /etc/init.d/nginx reload
, o que funciona muito bem. Eu tenho usado restart uwsgi
para o uwsgi mas preciso fazer um reload gracioso em vez de reiniciar o servidor.
Como posso fazer isso?
No momento, estou executando uma função bash reload uwsgi
por meio de subprocess.popen
. Parece estar apenas recarregando o processo que está chamando o subprocesso nem todos os sites hospedados pela instância uwsgi. importing uwsgi
e a execução uwsgi.reload
parece também afetar apenas o processo de chamada. Existe uma opção para qualquer uwsgi através de python ou bash que permite reiniciar todos os processos uwsgi
SIGHUP
Você pode reiniciar o uWSGI enviando o sinal SIGHUP para o seu processo uWSGI da seguinte forma:
kill -HUP <process-id>
Se você quiser automatizar isso em um script bash, você pode fazer com que o uWSGI escreva o ID do processo fornecendo a opção pidfile
, por exemplo, como:
--pidfile=/tmp/uwsgi.pid
Você pode recarregar o processo:
uwsgi --reload /tmp/uwsgi.pid
touch-reload
Você também pode iniciar o uWSGI com o argumento touch-reload
, que especifica um arquivo que, quando tocado, faz com que o uWSGI seja recarregado:
--touch-reload=/some/file
Em seguida, o uWSGI será recarregado quando você tocar no arquivo:
touch /some/file
Lembre-se de que você só pode recarregar o uWSGI quando estiver sendo executado com o modo de processo mestre, mas normalmente é o caso.
Mais informações: link