564 votes

Configurer le serveur de développement Flask pour qu'il soit visible sur le réseau

Je ne suis pas sûr que ce soit spécifique à Flask, mais lorsque 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 pas trouvé de documentation concernant la configuration du serveur de développement Flask. Une idée de ce qui devrait être configuré pour activer ceci ?

4voto

XuJiawan Points 551

Si @Shawn Swaner ne fonctionne pas, vous pouvez vérifier vos iptables. Consultez Comment autoriser les connexions distantes à Flask ? .

3voto

J'ai eu le même problème, j'utilise PyCharm comme éditeur et lorsque j'ai créé le projet, PyCharm a créé un serveur Flask. Ce que j'ai fait, c'est de créer un serveur avec Python de la manière suivante ;

Config Python Server PyCharm En gros, ce que j'ai fait, c'est créer un nouveau serveur, mais avec flask et non python.

J'espère que cela vous aidera

3voto

Tiina Points 1285

Cette réponse n'est pas uniquement liée à flask, mais devrait s'appliquer à tous les cas de figure. Impossible de connecter le service à partir d'un autre hôte question.

  1. utiliser netstat -ano | grep <port> pour voir si l'adresse est 0.0.0.0 ou : :. Si c'est 127.0.0.1, c'est uniquement pour les demandes locales.
  2. utiliser tcpdump pour voir si un paquet est manquant. S'il montre un déséquilibre évident, vérifiez les règles de routage par iptables.

Aujourd'hui, j'ai lancé mon application Flask comme d'habitude, mais j'ai remarqué qu'elle ne peut pas se connecter à partir d'un autre serveur. J'exécute alors netstat -ano | grep <port> et l'adresse locale est :: o 0.0.0.0 (J'ai essayé les deux, et je sais que 127.0.0.1 n'autorise la connexion que depuis l'hôte local). J'ai ensuite utilisé telnet host port le résultat est le suivant connect to ... . C'est très étrange. Alors j'ai pensé que je ferais mieux de vérifier avec tcpdump -i any port <port> -w w.pcap . Et j'ai remarqué que tout est comme ça :

tcpdump result shows it there is only SYN packets from remote host

Ensuite, en vérifiant iptables --list Dans la section OUTPUT, j'ai pu voir plusieurs règles :

iptables list result

ces règles interdisent la sortie de paquets vitaux tcp dans le handshaking. En les supprimant, le problème disparaît.

1voto

Ibz.Shaikh Points 315

Allez dans le chemin du projet set FLASK_APP=ABC.py SET FLASK_ENV=développement

flask run -h [yourIP] -p 8080 vous obtiendrez les résultats suivants sur CMD:- * Service de l'application Flask "expirement.py" (chargement paresseux) * Environnement : développement * Mode de débogage : on * Redémarrage avec stat * Le débogueur est actif ! * PIN du débogueur : 199-519-700 * Exécution sur http:// [votreIP]:8080/ (Appuyez sur CTRL+C pour quitter)

0voto

Azeezah M Points 104

Si aucune des solutions ci-dessus ne fonctionne, essayez d'ajouter manuellement "http://" au début de l'url.

Chrome peut distinguer "[adresse IP]:5000" d'une requête de recherche. Mais parfois, cela fonctionne pendant un certain temps, puis cesse de se connecter, apparemment sans que je modifie quoi que ce soit. Mon hypothèse est que le navigateur pourrait parfois ajouter automatiquement le préfixe http s :// (ce qui ne devrait pas être le cas, mais cela a réglé le problème dans mon cas).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X