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) 回复
干吗用的哦
回复评论