como fazer uma recarga graciosa do uwsgi via script bash?

9

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

    
por darren 01.06.2011 / 12:58

2 respostas

0

Você pode fazer isso em python

import uwsgi
uwsgi.reload()
    
por 01.06.2011 / 14:17
9

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

    
por 19.03.2013 / 10:04

Tags