gevent-socketio

___ qstnhdr ___ Wie mache ich einen Python Windows Service eines flask / gevent.socketio Servers? ___ answer15122510 ___

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 +

    
___ tag123windows ___ ALLGEMEINER WINDOWS-SUPPORT IST OFF-TOPIC. Support-Fragen können unter https://superuser.com gestellt werden. Windows ist ein von Microsoft entwickeltes Betriebssystem. Verwenden Sie dieses Tag nur, wenn sich Ihre Frage auf die Verwendung von Windows-APIs oder Windows-spezifischem Verhalten in Bezug auf Ihren Code bezieht, nicht nur, weil Sie Ihren Code unter Windows ausführen. ___ tag123python ___ Python ist eine dynamische und stark typisierte Programmiersprache, die die Usability betont. Zwei ähnliche, aber größtenteils inkompatible Versionen von Python sind weit verbreitet (2 und 3). Wenn Sie eine versionsspezifische Python-Frage haben, sollten Sie die Tags [python-2.7] oder [python-3.x] zusätzlich zum Tag [python] verwenden. Wenn Sie eine Python-Variante wie jython, pypy, iron-python usw. verwenden, kennzeichnen Sie diese bitte entsprechend. ___ tag123windowsservices ___ Windows-Dienste sind Hintergrunddienstprozesse, die vom Dienststeuerungs-Manager auf Windows NT-basierten Betriebssystemen ausgeführt werden, ähnlich wie Daemons oder UNIX-Dienste. ___ tag123flask ___ Flask ist ein leichtgewichtiges Framework für die Entwicklung von Webanwendungen mit Python. ___ tag123geventsocketeotio ___ WebSocket-ähnliche Abstraktion, die Echtzeitkommunikation zwischen einem Browser und einem Server ermöglicht. ___ answer25130503 ___

Ich kann nicht auf %code% in Flask außerhalb von %code% zugreifen, also verwende ich %code% .

%Vor%     
___ qstntxt ___

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%     
___ answer15093144 ___

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%     
___
1
Antwort

python.h nicht gern bei der Installation von gevent-socketio

hier ist mein Fehler, wenn ich versuche, gevent-socketio zu installieren    Installieren der gesammelten Pakete: gevent, greenlet    Setup.py wird für gevent ausgeführt    Aufbau 'gevent.core' Erweiterung    gcc -pthread -fno-strict-aliasing...
14.12.2013, 11:28
3
Antworten

Wie mache ich einen Python Windows Service eines flask / gevent.socketio Servers?

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...
13.02.2013, 21:22