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

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

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-04 09:44:14294parcourir

Can Python Scripts Be Run as Windows Services?

Exécuter des scripts Python en tant que services Windows

Dans le contexte du développement d'un système basé sur les services en Python, la question se pose de savoir s'il est possible pour exécuter des scripts Python en tant que services Windows. Cet article aborde cette question et apporte une réponse complète.

En effet, il est possible d'héberger des programmes Python en tant que services Windows, en exploitant les bibliothèques pythoncom incluses dans ActivePython ou via l'extension pywin32. Pour illustrer ce processus, considérons le squelette de code suivant pour un service rudimentaire :

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)

Insérez votre code personnalisé dans la fonction main(), en déployant généralement une boucle infinie qui peut être interrompue en surveillant un indicateur défini dans la méthode SvcStop.

De plus, Windows est alerté de l'existence de votre service via le Service Manager. Vous pouvez le surveiller et le gérer à l'aide d'utilitaires Windows natifs tels que la console de services (services.msc) ou l'outil de ligne de commande sc. Semblable au répertoire /etc/init.d d'Unix pour les scripts de démarrage/arrêt, Windows utilise le scm (Service Control Manager) pour gérer les services. À l'aide de l'utilitaire sc, vous pouvez effectuer diverses actions sur les services, notamment leur création, leur démarrage, leur arrêt et leur configuration.

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!

Déclaration:
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