Configurez Flask dev server pour qu'il soit visible sur le réseau

Je ne suis pas sûr que ce soit spécifique à Flask, mais quand je lance une application en mode dev (http://localhost:5000), Je ne peux pas y accéder depuis d'autres machines sur le réseau (avec http://[dev-host-ip]:5000). Avec Rails en mode dev, par exemple, cela fonctionne bien. Je n'ai trouvé aucun document concernant la configuration du serveur Flask dev. Une idée de ce qui devrait être configuré pour activer cela?

268
demandé sur davidism 2011-08-11 12:40:28

7 réponses

Bien que cela soit possible, vous ne devez pas utiliser le serveur de développement Flask en production. Le serveur dev Flask n'est pas conçu pour être particulièrement sécurisé, stable ou efficace. Voir les documents sur déployer pour les solutions correctes.


Ajouter un paramètre à votre app.run(). Par défaut, il fonctionne sur localhost, changez-le en app.run(host= '0.0.0.0') pour fonctionner sur l'adresse IP de vos machines.

Documenté sur le site Flask Sous "serveur externe Visible" sur la page de démarrage rapide :

Serveur Externe Visible

Si vous exécutez le serveur, vous remarquerez que le serveur n'est disponible à partir de votre propre ordinateur, pas de tout autre dans le réseau. C'est la valeur par défaut car en mode débogage un l'application peut exécuter du code Python arbitraire sur votre ordinateur. Si vous avoir debug désactivé ou faire confiance aux utilisateurs sur votre réseau, vous pouvez faire le serveur accessible au public.

Changez simplement l'appel de la méthode run() pour ressembler à ceci:

app.run(host='0.0.0.0')

Cela indique à votre système d'exploitation d'écouter sur une adresse IP publique.

465
répondu Shawn Swaner 2017-10-11 00:19:16

Si vous utilisez l'exécutable flask pour démarrer votre serveur, vous pouvez utiliser flask run --host=0.0.0.0 pour changer la valeur par défaut de 127.0.0.1 et l'ouvrir aux connexions non locales. La configuration et l'application.exécuter des méthodes que les autres réponses décrivent sont probablement de meilleures pratiques, mais cela peut également être pratique.

Serveur visible de L'extérieur si vous exécutez le serveur, vous remarquerez que le serveur n'est accessible qu'à partir de votre propre ordinateur, et non à partir d'autres dans le réseau. C'est la valeur par défaut car dans mode de débogage d'un utilisateur de l'application peut exécuter du code Python arbitraire sur votre ordinateur.

Si le débogueur est désactivé ou si vous faites confiance aux utilisateurs de votre réseau, vous pouvez rendre le serveur accessible au public simplement en ajoutant --host=0.0.0.0 à la ligne de commande:

Flask run --host = 0.0.0.0 Ceci indique à votre système d'exploitation d'écouter toutes les adresses IP publiques.

Référence: http://flask.pocoo.org/docs/0.11/quickstart/

56
répondu Aria 2016-10-29 01:28:01

Si votre application cool a sa configuration chargée à partir d'un fichier externe, comme dans l'exemple suivant, n'oubliez pas de mettre à jour le fichier de configuration correspondant avec HOST = "0.0.0.0"

cool.app.run(
    host=cool.app.config.get("HOST", "localhost"),
    port=cool.app.config.get("PORT", 9000)
)            
13
répondu mircealungu 2015-05-07 20:52:55

Ajoutez les lignes ci-dessous à votre projet

if __name__ == '__main__':
    app.debug = True
    app.run(host = '0.0.0.0',port=5005)
7
répondu Jeevan Chaitanya 2018-01-04 09:18:50

J'ai eu le même problème, j'utilise PyCharm comme un éditeur et quand j'ai créé le projet, PyCharm créé un Flacon Serveur. Ce que j'ai fait était de créer un serveur avec Python de la manière suivante;

Config Python Serveur PyCharm fondamentalement ce que j'ai fait était de créer un nouveau serveur mais flask sinon python

J'espère que cela vous aidera

2
répondu Juan Esteban Londoño Tabares 2018-07-04 13:46:07

Vérifiez si le port particulier est ouvert sur le serveur pour servir le client ou non?

Dans Ubuntu ou Linux distro

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

Configurez l'application pour gérer les requêtes distantes

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


python3 app.py & #run application in background
0
répondu IMRA 2018-09-01 19:12:17

En ajoutant à la réponse de @Shawn, il existe également une variable de configuration intégrée SERVER_NAME. nous pouvons définir cela à 0.0.0.0 dans le fichier de configuration que vous spécifiez dans app.config.from_pyfile("config.py"). notez également que, cela remplacera l'application.exécuter le nom de l'hôte.
Référence: http://flask.pocoo.org/docs/0.10/config/

-1
répondu sasikt 2016-02-02 06:23:38