Quiero implementar un comando que pueda detener la aplicación de flask usando flask-script. He buscado la solución por un tiempo. Debido a que el marco no proporciona la API "app.stop ()", tengo curiosidad sobre cómo codificar esto. Estoy trabajando en Ubuntu 12.10 y Python 2.7.3.
104
Respuestas:
Si solo está ejecutando el servidor en su escritorio, puede exponer un punto final para matar el servidor (lea más en Shutdown The Simple Server ):
Aquí hay otro enfoque que está más contenido:
Déjeme saber si esto ayuda.
fuente
methods='POST'
, obtengo un405 Method not allowed
error, mientras que con métodos = 'GET'`, funciona como sugirió @CS.Lo hice ligeramente diferente usando hilos.
Lo uso para hacer pruebas de extremo a extremo para una api tranquila, donde puedo enviar solicitudes utilizando la biblioteca de solicitudes de Python.
fuente
Este es un hilo un poco antiguo, pero si alguien que está experimentando, aprendiendo o probando una aplicación de matraz básico, comenzó desde un script que se ejecuta en segundo plano, la forma más rápida de detenerlo es matar el proceso que se ejecuta en el puerto en el que está ejecutando su aplicación. en. Nota: Soy consciente de que el autor está buscando una forma de no matar o detener la aplicación. Pero esto puede ayudar a alguien que está aprendiendo.
Obtendrá algo como esto.
Para detener la aplicación, finalice el proceso
fuente
Mi método se puede realizar a través de la terminal / consola de bash
1) ejecutar y obtener el número de proceso
2a) mata el proceso
2b) mata el proceso si lo anterior no funciona
fuente
kill -9 `lsof -i:5000 -t`
porque solo una aplicación puede usar el puerto y es fácil.Como han señalado otros, solo puede usar
werkzeug.server.shutdown
desde un controlador de solicitudes. La única forma que encontré para apagar el servidor en otro momento es enviarte una solicitud a ti mismo. Por ejemplo, el/kill
controlador en este fragmento matará al servidor de desarrollo a menos que entre otra solicitud durante el siguiente segundo:fuente
Esta es una vieja pregunta, pero buscar en Google no me dio ninguna idea de cómo lograrlo.
¡Porque no leí el código aquí correctamente! (¡Doh!) Lo que hace es levantar un
RuntimeError
cuando no haywerkzeug.server.shutdown
en elrequest.environ
...Entonces, ¿qué podemos hacer cuando no hay
request
es plantear unaRuntimeError
y coger eso cuando
app.run()
regrese:No es necesario que se envíe una solicitud.
fuente
No tiene que presionar "CTRL-C", pero puede proporcionar un punto final que lo haga por usted:
Ahora puede llamar a este punto final para apagar correctamente el servidor:
fuente
os.kill
, el cliente no puede recibir la respuesta devuelta. Paracurl
, genera "curl: (56) Recv failure: Connection was reset". Puede ver también Ejecutar una función después de que Flask devuelva una respuesta para resolverlo.Puedes usar el método a continuación
fuente
Si está trabajando en la CLI y solo tiene una aplicación / proceso de matraz en ejecución (o más bien, solo desea eliminar cualquier proceso de matraz que se esté ejecutando en su sistema), puede eliminarlo con:
kill $(pgrep -f flask)
fuente
Si está fuera del manejo de solicitudes y respuestas, aún puede:
fuente
Instancia de VM de Google Cloud + Aplicación Flask
He alojado mi aplicación Flask en la máquina virtual de Google Cloud Platform. Inicié la aplicación usando
python main.py
Pero el problema era que ctrl + c no funcionaba para detener el servidor.Este comando
$ sudo netstat -tulnp | grep :5000
termina el servidor.La aplicación My Flask se ejecuta en el puerto 5000 de forma predeterminada.
Nota: Mi instancia de VM se ejecuta en Linux 9.
Funciona para esto. No he probado para otras plataformas. No dude en actualizar o comentar si también funciona para otras versiones.
fuente
Para Windows, es bastante fácil detener / matar el servidor de flask -
fuente