基于Python编写的Windows服务程序参考代码

    xiaoxiao2021-03-25  100

    1 准备工作

    安装第三方模块pywin32,下载地址:https://sourceforge.net/projects/pywin32/files/pywin32/

    2 参考代码

    # -*- coding: utf-8 -*- # import win32service import win32serviceutil import win32event import servicemanager import winerror import sys import time import os class PythonService(win32serviceutil.ServiceFramework): ''' 自定义Service类继承win32serviceutil.ServiceFramework ''' _svc_name_ = "ServiceName" _svc_display_name_ = "Service display name" _svc_description_ = "Service description" def __init__(self, args): ''' 初始化父类以及创建事件用于监听服务的开启、暂停和关闭; ''' win32serviceutil.ServiceFramework.__init__(self, args) self.hWaitStop = win32event.CreateEvent(None, 0, 0, None) # 创建一个事件侦听stop请求 self.run = True # 服务运行状态标志 def SvcDoRun(self): self._Do(self._svc_name_+"服务启动...") while self.run: str_time = time.strftime("当前时间:%Y-%m-%d %H:%M:%S", time.localtime(time.time())) self._Do(str_time) time.sleep(5) def SvcStop(self): self._Do(self._svc_name_+"服务停止...") self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) win32event.SetEvent(self.hWaitStop) self.run = False def _Do(self, log): with open("c:\\a.txt", "a") as f: f.write(log+"\n") if __name__ == "__main__": if len(sys.argv) == 1: try: evtsrc_dll = os.path.abspath(servicemanager.__file__) servicemanager.PrepareToHostSingle(PythonService) servicemanager.Initialize("PythonService", evtsrc_dll) servicemanager.StartServiceCtrlDispatcher() except win32service.error, details: if details[0] == winerror.ERROR_FAILED_SERVICE_CONTROLLER_CONNECT: win32serviceutil.usage() else: win32serviceutil.HandleCommandLine(PythonService) # 整个服务程序的入口 ''' 安装服务    python winService.py install 自动启动    python winService.py –startup auto install # 如果需要设置开机自启动,则须要使用命令 启动服务    python winService.py start 重启服务    python winService.py restart 停止服务    python winService.py stop 删除\卸载服务  python winService.py remove '''

    转载请注明原文地址: https://ju.6miu.com/read-22015.html

    最新回复(0)