Maison > développement back-end > Tutoriel Python > Les programmes Python peuvent-ils être exécutés en tant que services Windows ?

Les programmes Python peuvent-ils être exécutés en tant que services Windows ?

Barbara Streisand
Libérer: 2024-12-02 22:30:11
original
136 Les gens l'ont consulté

Can Python Programs Be Run as Windows Services?

Exécuter des scripts Python en tant que services Windows

La nécessité de gérer des objets interdépendants stockés dans une base de données nécessite un service qui fournit une interface de niveau supérieur pour opérations sur ces objets. Cependant, des préoccupations surviennent concernant l'exécution de programmes Python en tant que service Windows pour permettre une exécution automatique sans connexion utilisateur.

Est-il possible d'exécuter des programmes Python en tant que service Windows ?

Oui, il est possible d'exécuter des programmes Python en tant que service Windows en utilisant les bibliothèques pythoncom incluses dans ActivePython ou installables avec pywin32.

Exemple d'implémentation

Un squelette de base d'un service simple :

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)
Copier après la connexion

Conscience et gestion des services Windows

Windows connaît le service via les modules win32serviceutil.ServiceFramework et servicemanager.

Vous pouvez gérer le service à l'aide des utilitaires natifs de Windows tels que l'applet Services dans le Panneau de configuration ou via la ligne de commande avec des commandes telles que :

  • net start servicename
  • nom du service net stop
  • nom du service sc queryex

Analogique vers /etc/init.d

Il n'y a pas d'équivalent direct à mettre un script start/stop dans /etc/init.d sous Windows. Les services Windows sont généralement configurés dans le registre Windows. Cependant, vous pouvez utiliser des gestionnaires de contrôle de services tels que SystemD ou Supervisor pour obtenir des fonctionnalités similaires.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal