A página serva WSGI não atualiza
Pergunta
Recentemente, consegui meu primeiro aplicativo para trabalhar na UWSGI com Cherokee. Eu usei o seguinte código retirado do uwsgi docs:
def application(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/plain')])
yield 'Hello World\n'
A página lê corretamente Hello World
. Quando eu mudo esse texto para New Thing
E atualize, nada muda. O que estou esquecendo?
O que eu tentei:
- Limpando a história do navegador e cache
- parando e começando Cherokee
Editar: para esclarecer, eu mudei
Hello World
para New Thing
no código Python. Então eu paro de Cherokee, atualizo e obviamente vejo uma mensagem de erro. Eu reinicio Cherokee, refresco, e vejo Hello World
.
Solução
Portanto, a maneira como isso funciona é que Cherokee está gerenciando uma instância UWSGI em execução no fundo para você. O que notei até agora, e não terminei de olhar, é que, se você desligar o Cherokee, ele também não parece encerrar as instâncias da UWSGI.
Experimente isso:
sudo service cherokee start
ps aux | grep uwsgi
# you should see nothing from this ps command
# now hit your web app
sudo service cherokee stop
ps aux | grep uwsgi
# you should see the instance of uwsgi that cherokee started
Portanto, seu código de aplicativo é realmente executado via UWSGI e Cherokee é mais como um servidor proxy. Para atualizar o código do aplicativo, você precisa enviar o sinal HUP para o UWSGI, não o Cherkee.
sudo killall -HUP uwsgi
Isso deve fazer com que o UWSGI seja atualizado para as alterações do seu aplicativo, independentemente do Cherokee.