Ich möchte einen Befehl implementieren, der die Kolbenanwendung mithilfe des Kolbenskripts stoppen kann. Ich habe eine Weile nach der Lösung gesucht. Da das Framework keine "app.stop ()" - API bereitstellt, bin ich gespannt, wie dies codiert werden kann. Ich arbeite an Ubuntu 12.10 und Python 2.7.3.
101
Antworten:
Wenn Sie den Server nur auf Ihrem Desktop ausführen, können Sie einen Endpunkt zum Beenden des Servers verfügbar machen (weitere Informationen finden Sie unter Herunterfahren des einfachen Servers ):
Hier ist ein anderer Ansatz, der ausführlicher ist:
Lassen Sie mich wissen, ob das hilft.
quelle
methods='POST'
erhalte ich eine405 Method not allowed
Fehlermeldung, während es mit Methoden = 'GET'` wie von @CS vorgeschlagen funktioniert.Ich habe es mit Threads etwas anders gemacht
Ich verwende es, um End-to-End-Tests für eine erholsame API durchzuführen, bei denen ich Anforderungen mithilfe der Python-Anforderungsbibliothek senden kann.
quelle
Dies ist ein etwas alter Thread, aber wenn jemand, der experimentiert, lernt oder die grundlegende Flask-App testet, von einem Skript gestartet wurde, das im Hintergrund ausgeführt wird, können Sie ihn am schnellsten stoppen, indem Sie den Prozess beenden, der auf dem Port ausgeführt wird, auf dem Sie Ihre App ausführen auf. Hinweis: Mir ist bekannt, dass der Autor nach einer Möglichkeit sucht, die App nicht zu beenden oder zu stoppen. Aber dies kann jemandem helfen, der lernt.
Sie werden so etwas bekommen.
Beenden Sie den Vorgang, um die App zu stoppen
quelle
Meine Methode kann über das Bash-Terminal / die Bash-Konsole fortgesetzt werden
1) ausführen und die Prozessnummer abrufen
2a) Beenden Sie den Prozess
2b) Beenden Sie den Prozess, wenn oben nicht funktioniert
quelle
kill -9 `lsof -i:5000 -t`
Übrigens benutze ich, weil keine andere als nur 1 App den Port nutzen kann und einfach ist.Wie andere bereits erwähnt haben, können Sie nur
werkzeug.server.shutdown
einen Anforderungshandler verwenden. Die einzige Möglichkeit, den Server zu einem anderen Zeitpunkt herunterzufahren, besteht darin, eine Anfrage an sich selbst zu senden. Der/kill
Handler in diesem Snippet beendet beispielsweise den Entwicklungsserver, sofern in der nächsten Sekunde keine weitere Anforderung eingeht:quelle
Dies ist eine alte Frage, aber das Googeln gab mir keinen Einblick, wie ich das erreichen kann.
Weil ich den Code hier nicht richtig gelesen habe ! (Doh!) Was es tut, ist ein zu erhöhen,
RuntimeError
wenn es keinewerkzeug.server.shutdown
in derrequest.environ
...Was wir also tun können, wenn es kein
request
gibt, ist, a zu erhöhenRuntimeError
und fangen Sie das bei der
app.run()
Rückkehr:Sie müssen sich keine Anfrage senden.
quelle
Sie müssen nicht "STRG-C" drücken, sondern können einen Endpunkt angeben, der dies für Sie erledigt:
Jetzt können Sie diesen Endpunkt einfach aufrufen, um den Server ordnungsgemäß herunterzufahren:
quelle
os.kill
kann der Kunde die zurückgegebene Antwort nicht mehr empfangen. Fürcurl
gibt es "curl: (56) Recv-Fehler: Verbindung wurde zurückgesetzt" aus. Siehe auch kann eine Funktion nach Flask kehrt Reaktion ausführen , es zu lösen.Sie können die folgende Methode verwenden
quelle
Wenn Sie auf der CLI arbeiten und haben nur einen Kolben app / Prozess läuft (oder besser gesagt, wollen Sie wollen einfach nur töten jeden Kolben - Prozess auf dem System ausgeführt wird ), können Sie es mit töten:
kill $(pgrep -f flask)
quelle
Wenn Sie sich außerhalb der Anfrage-Antwort-Behandlung befinden, können Sie dennoch:
quelle
Google Cloud VM-Instanz + Flask App
Ich habe meine Flask-Anwendung auf der virtuellen Maschine der Google Cloud Platform gehostet. Ich habe die App mit gestartet. Das
python main.py
Problem war jedoch, dass Strg + C nicht funktioniert hat, um den Server zu stoppen.Dieser Befehl
$ sudo netstat -tulnp | grep :5000
beendet den Server.Meine Flask-App wird standardmäßig auf Port 5000 ausgeführt.
Hinweis: Mein GCP läuft unter Linux 9.
Es funktioniert dafür. Nicht für andere Plattformen getestet. Fühlen Sie sich frei zu aktualisieren oder zu kommentieren, wenn es auch für andere Versionen funktioniert.
quelle
Für Windows ist es ziemlich einfach, den Flaschenserver zu stoppen / zu beenden -
quelle