Die Methode %code% stammt von %code% . Um es zu stoppen, müssen Sie %code% oder eine Ableitung davon aufrufen.
Kurz gesagt, Sie müssen %code% im globalen Gültigkeitsbereich deklarieren. Wenn Sie diesen Code vor Ihre %code% -Klassendefinition stellen, können Sie dies tun.
%Vor%Ändern Sie dann Ihre %code% -Implementierung zu dieser:
%Vor%Da %code% bereits darauf wartet, dass der Listener stoppt, können Sie %code% loswerden, es sei denn, Sie verwenden es woanders in Ihrem Code.
Erfordert Python 2.6 +
Ich kann nicht auf %code% in Flask außerhalb von %code% zugreifen, also verwende ich %code% .
%Vor%Ich habe einen flask / gevent SocketIOServer und muss es als Dienst funktionieren lassen:
%Vor%Allerdings kann ich nicht herausfinden, wie es von SvcStop gestoppt wird, und das Ausführen hat das seltsame Verhalten, dass das Service-Parsing von Befehlszeilenparametern NACH dem Beenden des Runservers erfolgte. Dies bedeutet, dass der Flashin Server ausgeführt wird. Ich kann vom Webbrowser aus zugreifen, der Service Manager hat ihn jedoch als "Nicht gestartet" aufgeführt. Zum Beispiel läuft in der Befehlszeile:
%Vor%Mit dem Vorschlag, den Live-Reloader zu entfernen, ist dies der verbleibende Code. Trotzdem, das gleiche Problem
def SvcDoRun (selbst): servicemanager.LogMsg (Servicemanager.EVENTLOG_INFORMATION_TYPE, Servicemanager.PYS_SERVICE_STARTED, (self._svc_name_, ''))
%Vor%Um es von SvcStop zu stoppen, müssen Sie einen Verweis auf "ws" in einer globalen Variablen speichern (das heißt, irgendwo, wo es später abgerufen werden kann). AFAIK "ws.kill ()" sollte dann die Schleife beenden.
Der run_with_loader-Decorator scheint die dekorierte Funktion sofort auszuführen, was erklären würde, warum die Befehlszeile nach der Ausführung des Webservers verarbeitet wird. Brauchen Sie ein automatisches Nachladen, erscheint der Decorator nur dann, wenn Sie neu geladen werden müssen.
UPDATE: Beispielcode hinzugefügt
In einem Projekt, das keine Flasche oder Gevent verwendet, benutze ich etwas ähnliches (mit vielen Details entfernt):
%Vor%