Configurar Flask dev server para que sea visible en toda la red


No estoy seguro si esto es específico de Flask, pero cuando corro una aplicación en modo dev (http://localhost:5000), no puedo acceder a ella desde otras máquinas en la red (con http://[dev-host-ip]:5000). Con Rails en modo dev, por ejemplo, funciona bien. No pude encontrar ningún documento sobre la configuración del servidor de desarrollo de Flask. ¿Alguna idea de lo que debe configurarse para habilitar esto?

Author: davidism, 2011-08-11

7 answers

Si bien esto es posible, no debe usar el servidor dev de Flask en producción. El servidor dev de Flask no está diseñado para ser particularmente seguro, estable o eficiente. Consulte los documentos en deploying para obtener las soluciones correctas.


Agregue un parámetro a su app.run(). De forma predeterminada se ejecuta en localhost, cámbielo a app.run(host= '0.0.0.0') para que se ejecute en la dirección IP de su máquina.

Documentado en el sitio de Flask bajo "Servidor Externamente Visible" en la página de Inicio rápido :

Servidor Externamente Visible

Si ejecuta el servidor, notará que el servidor es solo disponible desde su propio ordenador, no desde ningún otro en la red. Este es el valor predeterminado porque en el modo de depuración un usuario de la la aplicación puede ejecutar código Python arbitrario en su computadora. Si tener la depuración desactivada o confiar en los usuarios de su red, puede hacer el servidor disponible públicamente.

Simplemente cambie la llamada del método run() para que se vea así:

app.run(host='0.0.0.0')

Esto le dice a su sistema operativo que escuche en una IP pública.

 465
Author: Shawn Swaner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-11 00:19:16

Si usa el ejecutable flask para iniciar su servidor, puede usar flask run --host=0.0.0.0 para cambiar el valor predeterminado de 127.0.0.1 y abrirlo a conexiones no locales. La configuración y la aplicación.ejecutar métodos que las otras respuestas describen son probablemente una mejor práctica, pero esto también puede ser útil.

Servidor Externamente visible Si ejecuta el servidor, notará que el servidor solo es accesible desde su propio ordenador, no desde cualquier otros en la red. Este es el valor predeterminado porque en modo de depuración a usuario de la aplicación puede ejecutar código Python arbitrario en su ordenador.

Si tiene el depurador desactivado o confía en los usuarios de su red, puede hacer que el servidor esté disponible públicamente simplemente agregando -- host = 0.0.0.0 a la línea de comandos:

Flask run host host = 0.0.0.0 Esto le dice a su sistema operativo que escuche todas las IP públicas.

Referencia: http://flask.pocoo.org/docs/0.11/quickstart/

 56
Author: Aria,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-29 01:28:01

Si su aplicación cool tiene su configuración cargada desde un archivo externo, como en el siguiente ejemplo, no olvide actualizar el archivo de configuración correspondiente con HOST="0.0.0.0"

cool.app.run(
    host=cool.app.config.get("HOST", "localhost"),
    port=cool.app.config.get("PORT", 9000)
)            
 13
Author: mircealungu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-07 20:52:55

Agregue las siguientes líneas a su proyecto

if __name__ == '__main__':
    app.debug = True
    app.run(host = '0.0.0.0',port=5005)
 7
Author: Jeevan Chaitanya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-04 09:18:50

Tuve el mismo problema, uso PyCharm como editor y cuando creé el proyecto, PyCharm creó un servidor Flask. Lo que hice fue crear un servidor con Python de la siguiente manera;

Configuración del servidor Python PyCharm básicamente lo que hice fue crear un nuevo servidor pero flask si no python

Espero que te ayude

 2
Author: Juan Esteban Londoño Tabares,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-04 13:46:07

Compruebe si el puerto en particular está abierto en el servidor para servir al cliente o no?

En Ubuntu o Linux distro

sudo ufw enable
sudo ufw allow 5000/tcp //allow the server to handle the request on port 5000

Configurar la aplicación para manejar solicitudes remotas

app.run(host='0.0.0.0' , port=5000)


python3 app.py & #run application in background
 0
Author: IMRA,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-01 19:12:17

Añadiendo a la respuesta de @Shawn, también hay una variable de configuración incorporada SERVER_NAME. podemos establecer que a 0.0.0.0 en el archivo de configuración que se especifica en app.config.from_pyfile("config.py"). También tenga en cuenta que, esto anulará la aplicación.ejecutar nombre de host.
Referencia: http://flask.pocoo.org/docs/0.10/config/

 -1
Author: sasikt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-02 06:23:38