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 ?
Réponses
Trop de publicités?Si @Shawn Swaner ne fonctionne pas, vous pouvez vérifier vos iptables. Consultez Comment autoriser les connexions distantes à Flask ? .
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 ;
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
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.
- 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. - 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 :
Ensuite, en vérifiant iptables --list
Dans la section OUTPUT, j'ai pu voir plusieurs règles :
ces règles interdisent la sortie de paquets vitaux tcp dans le handshaking. En les supprimant, le problème disparaît.
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)
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).
- Réponses précédentes
- Plus de réponses