Servidor de desarrollo¶
Flask proporciona un comando run para ejecutar la aplicación con un servidor de desarrollo. En modo depuración, este servidor proporciona un depurador interactivo y se recargará cuando se modifique el código.
Advertencia
No utilice el servidor de desarrollo cuando lo despliegue en producción. Está pensado para ser utilizado sólo durante el desarrollo local. No está diseñado para ser particularmente eficiente, estable o seguro.
Ver Despliegue a producción para las opciones de despliegue.
Línea de comandos¶
El comando CLI flask run es la forma recomendada para ejecutar el servidor de desarrollo. Utilice la opción --app para apuntar a su aplicación, y la opción --debug para activar el modo de depuración.
$ flask --app hello run --debug
Esto habilita el modo de depuración, incluyendo el depurador interactivo y el reloader, y luego inicia el servidor en http://localhost:5000/. Utilice flask run --help para ver las opciones disponibles, y Interfaz de línea de comandos para obtener instrucciones detalladas sobre la configuración y el uso de la CLI.
Dirección ya utilizada¶
Si otro programa ya está utilizando el puerto 5000, verá un OSError cuando el servidor intente iniciarse. Puede tener uno de los siguientes mensajes:
OSError: [Errno 98] Dirección ya en usoOSError: [WinError 10013] Se ha intentado acceder a un socket de una forma prohibida por sus permisos de acceso
Identifique y detenga el otro programa, o utilice flask run --port 5001 para elegir un puerto diferente.
Puedes usar netstat o lsof para identificar qué id de proceso está usando un puerto, y luego usar otras herramientas del sistema operativo para detener ese proceso. El siguiente ejemplo muestra que el proceso 6847 está usando el puerto 5000.
$ netstat -nlp | grep 5000
tcp 0 0 127.0.0.1:5000 0.0.0.0:* LISTEN 6847/python
$ lsof -P -i :5000
Python 6847 IPv4 TCP localhost:5000 (LISTEN)
> netstat -ano | findstr 5000
TCP 127.0.0.1:5000 0.0.0.0:0 LISTENING 6847
macOS Monterey y posteriores inician automáticamente un servicio que utiliza el puerto 5000. Puedes optar por desactivar este servicio en lugar de utilizar otro puerto buscando «AirPlay Receiver» en Preferencias del Sistema y desactivándolo.
Errores diferidos en la recarga¶
Al utilizar el comando flask run con el reloader, el servidor continuará ejecutándose aunque introduzcas errores de sintaxis u otros errores de inicialización en el código. Al acceder al sitio se mostrará el depurador interactivo para el error, en lugar de bloquear el servidor.
Si hay un error de sintaxis cuando se llama a flask run, fallará inmediatamente y mostrará el rastro en lugar de esperar hasta que se acceda al sitio. Esto pretende hacer que los errores sean más visibles al principio, al tiempo que permite al servidor manejar los errores en la recarga.
En Código¶
El servidor de desarrollo también puede ser inicializado desde Python con el método :meth: Flask.run. Este método toma argumentos similares a las opciones de CLI para controlar el servidor. La principal diferencia con el comando CLI es que el servidor fallará si hay errores al recargar. Se puede pasar debug=True para habilitar el modo de depuración.
Coloque la llamada en un bloque principal, de lo contrario interferirá al intentar importar y ejecutar la aplicación con un servidor de producción más tarde.
if __name__ == "__main__":
app.run(debug=True)
$ python hello.py