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

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

Barbara Streisand
Freigeben: 2024-12-02 22:30:11
Original
137 Leute haben es durchsucht

Can Python Programs Be Run as Windows Services?

Python-Skripte als Windows-Dienste ausführen

Die Notwendigkeit, in einer Datenbank gespeicherte miteinander verbundene Objekte zu verwalten, erfordert einen Dienst, der eine Schnittstelle auf höherer Ebene dafür bereitstellt Operationen an diesen Objekten. Es bestehen jedoch Bedenken hinsichtlich der Ausführung von Python-Programmen als Windows-Dienst, um eine automatische Ausführung ohne Benutzeranmeldung zu ermöglichen.

Ist es möglich, Python-Programme als Windows-Dienst auszuführen?

Ja, es ist möglich, Python-Programme als Windows-Dienst mithilfe der Pythoncom-Bibliotheken auszuführen, die in ActivePython enthalten sind oder mit installiert werden können pywin32.

Beispielimplementierung

Ein Grundgerüst eines einfachen Dienstes:

import win32serviceutil
import win32service
import win32event
import servicemanager

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)

    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)
Nach dem Login kopieren

Windows Service Awareness and Management

Windows erkennt den Dienst über die Module win32serviceutil.ServiceFramework und servicemanager.

Sie können den Dienst mit den nativen Windows-Dienstprogrammen wie dem Dienste-Applet in der Systemsteuerung oder über die Befehlszeile mit Befehlen wie:

  • net start servicename
  • net stop servicename
  • sc queryex Dienstname

Analog zu /etc/init.d

Es gibt kein direktes Äquivalent zum Einfügen eines Start-/Stopp-Skripts in /etc/init.d Windows. Windows-Dienste werden normalerweise in der Windows-Registrierung konfiguriert. Sie können jedoch Dienstkontrollmanager wie SystemD oder Supervisor verwenden, um ähnliche Funktionen zu erreichen.

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

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage