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?
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.
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/
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)
)
Ajoutez les lignes ci-dessous à votre projet
if __name__ == '__main__':
app.debug = True
app.run(host = '0.0.0.0',port=5005)
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;
fondamentalement ce que j'ai fait était de créer un nouveau serveur mais flask sinon python
J'espère que cela vous aidera
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
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/