Dies ist zwar möglich, Sie sollten den Flask-Entwicklungsserver jedoch nicht in der Produktion verwenden. Der Flask-Entwicklungsserver ist nicht besonders sicher, stabil oder effizient. In den Dokumenten zur Bereitstellung finden Sie die richtigen Lösungen.
Fügen Sie Ihrem einen Parameter hinzu app.run()
. Standardmäßig wird es auf localhost ausgeführt. Ändern Sie es so app.run(host= '0.0.0.0')
, dass es auf der IP-Adresse Ihres Computers ausgeführt wird.
Dokumentiert auf der Flask-Site unter "Extern sichtbarer Server" auf der Schnellstartseite :
Extern sichtbarer Server
Wenn Sie den Server ausführen, werden Sie feststellen, dass der Server nur von Ihrem eigenen Computer aus verfügbar ist, nicht von einem anderen im Netzwerk. Dies ist die Standardeinstellung, da ein Benutzer der Anwendung im Debugging-Modus beliebigen Python-Code auf Ihrem Computer ausführen kann. Wenn Sie das Debuggen deaktiviert haben oder den Benutzern in Ihrem Netzwerk vertrauen, können Sie den Server öffentlich verfügbar machen.
Ändern Sie einfach den Aufruf der run()
Methode so, dass er so aussieht:
app.run(host='0.0.0.0')
Dies weist Ihr Betriebssystem an, eine öffentliche IP-Adresse abzuhören.
mymacname.local
.flask run --host 0.0.0.0
, damit es funktioniert.Wenn Sie die ausführbare Flask-Datei zum Starten Ihres Servers verwenden, können Sie
flask run --host=0.0.0.0
die Standardeinstellung von 127.0.0.1 ändern und für nicht lokale Verbindungen öffnen. Die in den anderen Antworten beschriebenen Methoden config und app.run sind wahrscheinlich besser, aber dies kann auch nützlich sein.Referenz: http://flask.pocoo.org/docs/0.11/quickstart/
quelle
127.0.0.1
(ich habe meine ausführbare Flask-Datei ordnungsgemäß eingerichtet, oder so schien es nicht sicher, was ich falsch gemacht habe). Nachdem ichapp.run(host='0.0.0.0')
meine Serverdatei wie in einer anderen Antwort angegeben hinzugefügt hatte , konnte ich über Netzwerke auf die Seite zugreifen. Hat noch jemand ein Problem wie das, das ich beschrieben habe, oder hat er irgendwelche Informationen dazu?Versuchen Sie dies, wenn die 0.0.0.0-Methode nicht funktioniert
Langweiliges Zeug
Ich persönlich habe viel gekämpft, um meine App über einen lokalen Server für andere Geräte (Laptops und Mobiltelefone) zugänglich zu machen. Ich habe die 0.0.0.0-Methode ausprobiert, aber kein Glück. Dann habe ich versucht, den Port zu ändern, aber es hat einfach nicht funktioniert. Nachdem ich eine Reihe verschiedener Kombinationen ausprobiert hatte, kam ich zu dieser und sie löste mein Problem, meine App auf einem lokalen Server bereitzustellen.
Schritte
ipconfig
unter Windows sowieifconfig
unter Linux und Mac erfolgen.Bitte beachten Sie: Der obige Schritt muss auf dem Computer ausgeführt werden, auf dem Sie die App bereitstellen, und nicht auf dem Computer, auf dem Sie darauf zugreifen. Beachten Sie auch, dass sich die IPv4-Adresse möglicherweise ändert, wenn Sie die Verbindung zum Netzwerk trennen und erneut herstellen.
Führen Sie jetzt einfach die Kolben-App mit der erfassten IPv4-Adresse aus.
flask run -h 192.168.X.X
ZB In meinem Fall (siehe Bild) habe ich es wie folgt ausgeführt:
flask run -h 192.168.1.100
Auf meinem mobilen Gerät
Optionales Zeug
Wenn Sie dieses Verfahren unter Windows ausführen und Power Shell als CLI verwenden und immer noch nicht auf die Website zugreifen können, versuchen Sie einen STRG + C-Befehl in der Shell, in der die App ausgeführt wird. Power Shell wird manchmal eingefroren und es braucht eine Prise, um wiederzubeleben. Dadurch wird möglicherweise sogar der Server beendet, aber manchmal reicht dies aus.
Das ist es. Geben Sie einen Daumen hoch, wenn Sie dies hilfreich fanden
Noch ein paar optionale Sachen
Ich habe ein kurzes Powershell-Skript erstellt, mit dem Sie Ihre IP-Adresse erhalten, wann immer Sie eine benötigen:
Speichern Sie es in einer Datei mit der Erweiterung .ps1 (für PowerShell) und führen Sie es aus, bevor Sie Ihre App starten. Sie können es in Ihrem Projektordner speichern und ausführen als:
Hinweis: Ich habe den obigen Shell-Code in getIP.ps1 gespeichert.
Cool.👌
quelle
Wenn
cool
die Konfiguration Ihrer App wie im folgenden Beispiel aus einer externen Datei geladen wurde, vergessen Sie nicht, die entsprechende Konfigurationsdatei mit HOST = "0.0.0.0" zu aktualisieren.quelle
Fügen Sie Ihrem Projekt die folgenden Zeilen hinzu
quelle
OSError: [WinError 10013] An attempt was made to access a socket in a way forbidden by its access permissions
netstat -na|findstr 5005
.Überprüfen Sie, ob der bestimmte Port auf dem Server geöffnet ist, um den Client zu bedienen, oder nicht.
in Ubuntu oder Linux Distribution
Konfigurieren Sie die Anwendung für die Verarbeitung von Remoteanforderungen
quelle
Gehen Sie auf CMD zu Ihrem Projektpfad (Eingabeaufforderung) und führen Sie den folgenden Befehl aus: -
setze FLASK_APP = ABC.py.
SET FLASK_ENV = Entwicklung
Kolbenlauf -h [yourIP] -p 8080
Sie erhalten folgende O / P auf CMD: -
Jetzt können Sie über http: // [yourIP]: 8080 / url auf einem anderen Computer auf Ihre Kolben-App zugreifen
quelle
Wenn Sie Probleme beim Zugriff auf Ihren mit PyCharm bereitgestellten Flask-Server haben, berücksichtigen Sie Folgendes:
PyCharm führt Ihre .py-Hauptdatei nicht direkt aus, sodass Code in
if __name__ == '__main__':
nicht ausgeführt wird und Änderungen (wieapp.run(host='0.0.0.0', port=5000)
) nicht wirksam werden.Stattdessen sollten Sie den Flask-Server mithilfe von Konfigurationen ausführen konfigurieren, insbesondere indem Sie ihn
--host 0.0.0.0 --port 5000
in das Feld Zusätzliche Optionen einfügen.Weitere Informationen zum Konfigurieren des Flask-Servers in PyCharm
quelle
Ich hatte das gleiche Problem, ich benutze PyCharm als Editor und als ich das Projekt erstellte, erstellte PyCharm einen Flask Server. Ich habe auf folgende Weise einen Server mit Python erstellt:
Im Grunde habe ich einen neuen Server erstellt, aber eine Flasche, wenn nicht Python
Ich hoffe es hilft dir
quelle
Diese Antwort bezieht sich nicht nur auf flask, sondern sollte für alle gelten, die keinen Dienst von einem anderen Host- Problem verbinden können.
netstat -ano | grep <port>
Sie diese Option, um festzustellen, ob die Adresse 0.0.0.0 oder :: lautet. Wenn es 127.0.0.1 ist, ist es nur für die lokalen Anforderungen.Heute starte ich meine Kolben-App wie gewohnt, habe aber festgestellt, dass keine Verbindung von einem anderen Server hergestellt werden kann. Dann starte ich
netstat -ano | grep <port>
und die lokale Adresse ist::
oder0.0.0.0
(ich habe beide ausprobiert und ich weiß, dass 127.0.0.1 nur eine Verbindung vom lokalen Host zulässt). Dann habe ich verwendettelnet host port
, das Ergebnis ist wieconnect to ...
. Das ist sehr seltsam. Dann dachte ich, ich sollte es besser überprüfentcpdump -i any port <port> -w w.pcap
. Und mir ist aufgefallen, dass alles so ist:iptables --list
Wenn ich dann den Abschnitt OUTPUT überprüfe, sehe ich verschiedene Regeln:Diese Regeln verbieten die Ausgabe von TCP-Vitalpaketen beim Handshake. Durch das Löschen ist das Problem behoben.
quelle
Für mich folgte ich der obigen Antwort und änderte sie ein wenig:
Z.B:
quelle
Gehe zum Projektpfad set FLASK_APP = ABC.py SET FLASK_ENV = Entwicklung
flask run -h [yourIP] -p 8080 Sie werden o / p auf CMD folgen: - * Serving Flask App "expirement.py" (verzögertes Laden) * Umgebung: Entwicklung * Debug-Modus: on * Neustart mit stat * Debugger ist aktiv ! * Debugger-PIN: 199-519-700 * Läuft unter http: // [yourIP]: 8080 / ( Drücken Sie STRG + C, um das Programm zu beenden.)
quelle
Sie können den Host (um ihn in einem Netzwerk mit IP-Adresse verfügbar zu machen) und den Port auch über Umgebungsvariablen festlegen.
Siehe Wie bekomme ich alle verfügbaren Befehlsoptionen zum Festlegen von Umgebungsvariablen?
quelle
Erstellen Sie eine Datei
.flaskenv
im Projektstammverzeichnis.Die Parameter in dieser Datei sind normalerweise:
Wenn Sie eine virtuelle Umgebung haben, aktivieren Sie diese und führen Sie eine aus
pip install python-dotenv
.Dieses Paket verwendet die
.flaskenv
Datei und die darin enthaltenen Deklarationen werden automatisch über Terminalsitzungen importiert.Dann können Sie tun
flask run
quelle