
import sys |
import time |
import win32api |
import win32event |
import win32service |
import win32serviceutil |
import servicemanager |
class MyService(win32serviceutil.ServiceFramework): |
_svc_name_ = "My Service" |
_svc_display_name_ = "My Service" |
_svc_description_ = "测试服务" |
def __init__(self, args): |
self.log('init') |
win32serviceutil.ServiceFramework.__init__(self, args) |
self.stop_event = win32event.CreateEvent(None, 0, 0, None) |
self.client =None |
def SvcDoRun(self): |
self.ReportServiceStatus(win32service.SERVICE_START_PENDING) |
try: |
self.ReportServiceStatus(win32service.SERVICE_RUNNING) |
self.log('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) |




初级程序员
by: 浅念ice 发表于:2020-02-06 16:47:24 顶(1) | 踩(0) 回复
干吗用的哦
回复评论