Heim >Backend-Entwicklung >Python-Tutorial >Können Python-Skripte als Windows-Dienste ausgeführt werden?

Können Python-Skripte als Windows-Dienste ausgeführt werden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-04 09:44:14294Durchsuche

Can Python Scripts Be Run as Windows Services?

Python-Skripte als Windows-Dienste ausführen

Im Zusammenhang mit der Entwicklung eines dienstbasierten Systems in Python stellt sich die Frage, ob dies möglich ist um Python-Skripte als Windows-Dienste auszuführen. Dieser Artikel befasst sich mit dieser Frage und bietet eine umfassende Antwort.

Tatsächlich ist es möglich, Python-Programme als Windows-Dienste zu hosten und dabei die in ActivePython enthaltenen Pythoncom-Bibliotheken oder die Erweiterung pywin32 zu nutzen. Um diesen Prozess zu veranschaulichen, betrachten Sie das folgende Codegerüst für einen rudimentären Dienst:

import win32serviceutil
import win32service
import win32event
import servicemanager
import socket

class AppServerSvc (win32serviceutil.ServiceFramework):
    _svc_name_ = "TestService"
    _svc_display_name_ = "Test Service"

    def __init__(self,args):
        win32serviceutil.ServiceFramework.__init__(self,args)
        self.hWaitStop = win32event.CreateEvent(None,0,0,None)
        socket.setdefaulttimeout(60)

    def SvcStop(self):
        self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
        win32event.SetEvent(self.hWaitStop)

    def SvcDoRun(self):
        servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
                              servicemanager.PYS_SERVICE_STARTED,
                              (self._svc_name_,''))
        self.main()

    def main(self):
        pass

if __name__ == '__main__':
    win32serviceutil.HandleCommandLine(AppServerSvc)

Fügen Sie Ihren benutzerdefinierten Code in die Funktion main() ein und stellen Sie dabei normalerweise eine Endlosschleife bereit, die durch die Überwachung eines gesetzten Flags unterbrochen werden kann die SvcStop-Methode.

Darüber hinaus wird Windows über den Service Manager auf die Existenz Ihres Dienstes aufmerksam gemacht. Sie können es mit nativen Windows-Dienstprogrammen wie der Services Console (services.msc) oder dem sc-Befehlszeilentool überwachen und verwalten. Ähnlich wie das Verzeichnis /etc/init.d von Unix für Start-/Stopp-Skripte verwendet Windows den scm (Service Control Manager) zur Verwaltung von Diensten. Mit dem sc-Dienstprogramm können Sie verschiedene Aktionen für Dienste ausführen, einschließlich deren Erstellen, Starten, Stoppen und Konfigurieren.

Das obige ist der detaillierte Inhalt vonKönnen Python-Skripte als Windows-Dienste ausgeführt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn