国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python制作Windows系統服務

2019-11-25 16:17:19
字體:
來源:轉載
供稿:網友

最近有個Python程序需要安裝并作為Windows系統服務來運行,過程中碰到一些坑,整理了一下。

Python服務類

首先Python程序需要調用一些Windows系統API才能作為系統服務,具體內容如下:

#!/usr/bin/env python# -*- coding: utf-8 -*-import sysimport timeimport win32apiimport win32eventimport win32serviceimport win32serviceutilimport 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):    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)

pyinstaller打包

pyinstaller -F MyService.py

測試

# 安裝服務dist/MyService.exe install# 啟動服務sc start MyService# 停止服務sc stop MyService# 刪除服務sc delete MyService

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江陵县| 陕西省| 昆明市| 峨眉山市| 汾阳市| 香格里拉县| 安化县| 青阳县| 开远市| 乐东| 肥城市| 富川| 清水河县| 洪泽县| 台安县| 丰镇市| 达拉特旗| 牙克石市| 宁远县| 天祝| 衡阳县| 正定县| 仲巴县| 正蓝旗| 乌拉特中旗| 富蕴县| 邯郸市| 合水县| 平顶山市| 隆德县| 香港| 革吉县| 桐城市| 黄梅县| 八宿县| 焉耆| 古蔺县| 育儿| 乌拉特前旗| 玉山县| 永安市|