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)
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 :
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!