Python制作Windows系统服务
生活随笔
收集整理的這篇文章主要介紹了
Python制作Windows系统服务
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Python制作Windows系統服務
最近有個Python程序需要安裝并作為Windows系統服務來運行,過程中碰到一些坑,整理了一下。
Python服務類
首先Python程序需要調用一些Windows系統API才能作為系統服務,具體內容如下:
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys import timeimport win32api import win32event import win32service import win32serviceutil import servicemanagerclass MyService(win32serviceutil.ServiceFramework):_svc_name_ = "MyService"_svc_display_name_ = "My Service"_svc_description_ = "My Service"def __init__(self, args):self.log('init')win32serviceutil.ServiceFramework.__init__(self, args)self.stop_event = win32event.CreateEvent(None, 0, 0, None)def SvcDoRun(self):self.ReportServiceStatus(win32service.SERVICE_START_PENDING)try:self.ReportServiceStatus(win32service.SERVICE_RUNNING)self.log('start')self.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):passdef 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)pyinstaller打包
pyinstaller -F MyService.py測試
# 安裝服務 dist\MyService.exe install# 啟動服務 sc start MyService# 停止服務 sc stop MyService# 刪除服務 sc delete MyService轉載請以鏈接形式標明本文鏈接
本文鏈接:http://blog.csdn.net/kongxx/article/details/65435076
總結
以上是生活随笔為你收集整理的Python制作Windows系统服务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenWRT AR9331 mjpg
- 下一篇: 使用PMS系统项目管理