This article mainly introduces the relevant information of Python to create Windows system services. It has certain reference value. Interested friends can refer to
Recently A Python program needs to be installed and run as a Windows system service. I encountered some pitfalls in the process and sorted them out.
Python service class
First of all, the Python program needs to call some Windows system API to serve as a system service. The specific content is as follows:
#!/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)
pyinstaller packaging
pyinstaller -F MyService.py
test
# 安装服务 dist\MyService.exe install # 启动服务 sc start MyService # 停止服务 sc stop MyService # 删除服务 sc delete MyService
The above is the detailed content of Detailed explanation of examples of creating Windows system services in Python. For more information, please follow other related articles on the PHP Chinese website!