Cet article présente principalement en détail les informations pertinentes de Python pour créer des services système Windows. Il a une certaine valeur de référence. Les amis intéressés peuvent se référer à
Récemment Un programme Python doit être. installé et exécuté en tant que service système Windows. J'ai rencontré quelques pièges au cours du processus et je les ai résolus.
Classe de service Python
Tout d'abord, le programme Python doit appeler une API du système Windows pour servir de service système. Le contenu spécifique est le suivant :
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys import time import win32api import win32event import win32service import win32serviceutil import servicemanager class MyService(win32serviceutil.ServiceFramework): _svc_name_ = "MyService" _svc_display_name_ = "My Service" _svc_description_ = "My Service" def init(self, args): self.log('init') win32serviceutil.ServiceFramework.init(self, args) self.stop_event = win32event.CreateEvent(None, 0, 0, None) def SvcDoRun(self): self.ReportServiceStatus(win32service.SERVICE_START_PENDING) try: self.ReportServiceStatus(win32service.SERVICE_RUNNING) self.log('start') self.start() self.log('wait') win32event.WaitForSingleObject(self.stop_event, win32event.INFINITE) self.log('done') except BaseException as e: self.log('Exception : %s' % e) self.SvcStop() def SvcStop(self): self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) self.log('stopping') self.stop() self.log('stopped') win32event.SetEvent(self.stop_event) self.ReportServiceStatus(win32service.SERVICE_STOPPED) def start(self): time.sleep(10000) def stop(self): pass def log(self, msg): servicemanager.LogInfoMsg(str(msg)) def sleep(self, minute): win32api.Sleep((minute*1000), True) if name == "main": if len(sys.argv) == 1: servicemanager.Initialize() servicemanager.PrepareToHostSingle(MyService) servicemanager.StartServiceCtrlDispatcher() else: win32serviceutil.HandleCommandLine(MyService)
package pyinstaller
pyinstaller -F MyService.py
Test
# 安装服务 dist\MyService.exe install # 启动服务 sc start MyService # 停止服务 sc stop MyService # 删除服务 sc delete MyService
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!