python程序封装为win32服务的方法

  

本文实例为大家分享了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 \      

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

python程序封装为win32服务的方法