Eu quero implementar um comando que pode interromper a aplicação de flask usando flask-script. Há algum tempo procuro a solução. Como a estrutura não fornece a API "app.stop ()", estou curioso para saber como codificar isso. Estou trabalhando no Ubuntu 12.10 e Python 2.7.3.
102
Respostas:
Se você está apenas executando o servidor em seu desktop, pode expor um endpoint para encerrar o servidor (leia mais em Shutdown The Simple Server ):
Aqui está outra abordagem que é mais contida:
Avise-me se isso ajudar.
fonte
methods='POST'
, recebo um405 Method not allowed
erro, enquanto que com métodos = 'GET'`, funciona como @CS sugerido.Fiz um pouco diferente usando tópicos
Eu o uso para fazer testes de ponta a ponta para api restful, onde posso enviar solicitações usando a biblioteca de solicitações python.
fonte
Este é um tópico um pouco antigo, mas se alguém experimentando, aprendendo ou testando o aplicativo básico do flask, começou a partir de um script executado em segundo plano, a maneira mais rápida de interrompê-lo é encerrar o processo em execução na porta em que você está executando o aplicativo em. Nota: Estou ciente de que o autor está procurando uma maneira de não matar ou parar o aplicativo. Mas isso pode ajudar alguém que está aprendendo.
Você obterá algo assim.
Para parar o aplicativo, interrompa o processo
fonte
Meu método pode ser executado via terminal / console bash
1) execute e obtenha o número do processo
2a) matar o processo
2b) interromper o processo se acima não funcionar
fonte
kill -9 `lsof -i:5000 -t`
porque nenhum outro além de um aplicativo pode usar a porta e está sendo fácil.Como outros apontaram, você só pode usar a
werkzeug.server.shutdown
partir de um manipulador de solicitações. A única maneira que encontrei de desligar o servidor em outro momento é enviar uma solicitação para você mesmo. Por exemplo, o/kill
manipulador neste snippet eliminará o servidor de desenvolvimento, a menos que outra solicitação chegue durante o próximo segundo:fonte
Esta é uma pergunta antiga, mas pesquisar no Google não me deu nenhuma ideia de como fazer isso.
Porque eu não li o código aqui corretamente! (Doh!) O que faz é levantar um
RuntimeError
quando não háwerkzeug.server.shutdown
norequest.environ
...Então, o que podemos fazer quando não há
request
é levantar umRuntimeError
e pegue isso quando
app.run()
retornar:Não há necessidade de enviar um pedido a si mesmo.
fonte
Você não precisa pressionar "CTRL-C", mas pode fornecer um ponto de extremidade que faz isso para você:
Agora você pode simplesmente chamar este endpoint para desligar o servidor normalmente:
fonte
os.kill
, a resposta retornada não pode ser recebida pelo cliente. Paracurl
, ele produz "curl: (56) Falha de recebimento: a conexão foi reiniciada". Pode ver também Executar uma função após o Flask retornar uma resposta para resolvê-lo.Você pode usar o método abaixo
fonte
Se você estiver trabalhando na CLI e tiver apenas um aplicativo / processo flask em execução (ou melhor, se quiser apenas matar qualquer processo flask em execução no seu sistema), poderá eliminá-lo com:
kill $(pgrep -f flask)
fonte
Se você estiver fora do tratamento de solicitação-resposta, ainda pode:
fonte
Instância de VM do Google Cloud + aplicativo Flask
Hospedei meu aplicativo Flask na máquina virtual do Google Cloud Platform. Iniciei o aplicativo usando
python main.py
Mas o problema era ctrl + c não funcionou para parar o servidor.Este comando
$ sudo netstat -tulnp | grep :5000
termina o servidor.Meu aplicativo Flask é executado na porta 5000 por padrão.
Observação: minha instância de VM está sendo executada no Linux 9.
Funciona para isso. Não testei para outras plataformas. Sinta-se à vontade para atualizar ou comentar se funcionar também para outras versões.
fonte
Para Windows, é muito fácil parar / encerrar o servidor Flask -
fonte