本文实例为大家分享了python程序封装为win32服务的具体代码,供大家参考,具体内容如下
#=utf - 8编码 进口操作系统 导入系统 进口winerror 进口win32serviceutil 进口win32service 进口win32event 进口servicemanager 类PythonService (win32serviceutil.ServiceFramework): #服务名 _svc_name_=" PythonService1 " #服务显示名称 _svc_display_name_=" PythonServiceDemo " #服务描述 _svc_description_=癙ython服务演示。” def __init__(自我,args): win32serviceutil.ServiceFramework。__init__(自我,args) 自我。hWaitStop=win32event。CreateEvent(没有,0,0,没有) 自我。记录器=self._getLogger () 自我。isAlive=True def _getLogger(自我): 导入日志 进口操作系统 进口检查 记录器=logging.getLogger (“[PythonService]”) this_file=inspect.getfile (inspect.currentframe ()) dirpath=os.path.abspath (os.path.dirname (this_file)) 处理程序=logging.FileHandler (os.path。加入(dirpath service.log)) 格式化程序=logging.Formatter (“% (asctime) %(名字)-12年代% (levelname) 8 s %(消息)s ') handler.setFormatter (formatter) logger.addHandler(处理器) logger.setLevel (logging.INFO) 返回日志记录器 def SvcDoRun(自我): 导入的时间 self.logger。错误(“svc ....运行”) 试一试: 而self.isAlive: self.logger。错误(“我活着。”) time . sleep (1) #等待服务被停止 # win32event.WaitForSingleObject(自我。hWaitStop win32event.INFINITE) 除了例外e: self.logger.error (e) time . sleep (60) def SvcStop(自我): #先告诉SCM停止这个过程 self.logger。错误(“svc做停止....”) self.ReportServiceStatus (win32service.SERVICE_STOP_PENDING) #设置事件 win32event.SetEvent (self.hWaitStop) 自我。isAlive=False if __name__==癬_main__”: 如果len (sys.argv)==1: 试一试: src_dll=os.path.abspath (servicemanager.__file__) servicemanager.PrepareToHostSingle (PythonService) servicemanager。初始化(“PythonService”, src_dll) servicemanager.StartServiceCtrlDispatcher () 除了例外e: 打印(e) #如果[0]==winerror.ERROR_FAILED_SERVICE_CONTROLLER_CONNECT细节: # win32serviceutil.usage () 其他: win32serviceutil.HandleCommandLine (PythonService) #参数和上述定义类名一致 # pip安装pywin32 #安装服务 python PythonService #。py安装 #让服务自动启动 python PythonService #。py——启动自动安装 #启动服务 python PythonService #。py开始 #重启服务 python PythonService #。py重启 #停止服务 python PythonService #。py停止 #删除/卸载服务 python PythonService #。py删除 #在用户变量处去掉python路径,然后在环境变量加入python路径 # C:\Users\ zhongjianhui \ AppData \本地Python \程序\ \ Python36 \ Lib \网站\ pywin32_system32; # C:\Users\ zhongjianhui \ AppData \本地Python \程序\ \ Python36 \ Lib \网站\ win32; # C:\Users\ zhongjianhui \ AppData \本地Python脚本\ Python36 \ \程序\ \; # C: \用户\ zhongjianhui \ AppData \本地Python \程序\ \ Python36 \
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。