Python制作Windows系统服务
2017-03-25 15:04
701 查看
最近有个Python程序需要安装并作为Windows系统服务来运行,过程中碰到一些坑,整理了一下。
Python服务类
首先Python程序需要调用一些Windows系统API才能作为系统服务,具体内容如下:
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys import time import win32api import win32event import win32service import win32serviceutil import servicemanager class 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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章推荐
- Python制作Windows系统服务
- Python制作Windows系统服务
- windows环境将Python脚本做成系统服务
- windows下python监控系统服务
- C#制作Windows service服务系列三--制作可控制界面的Windows服务(windows service)
- 使用Java Service Wrapper 把Java程序作为Windows系统服务
- 用命令行开启关闭windows系统服务
- windows下通过services.msc命令把某些服务停止引起系统运行异常的事宜
- Windows系统下使用flup搭建Nginx和Python环境的方法
- 如何在将Jboss 安装为Windows 服务时设定系统参数
- C#制作Windows service服务系列一:制作一个可安装、可启动、可停止、可卸载的Windows service
- 为macbook pro 2013late制作windows 10 u盘系统
- windows下Tomcat添加系统服务
- Windows 64 位系统下 Python 环境的搭建
- 安装制作问题 为什么在做安装程序时提示:msjro.dll受windows系统保护
- C#实现Windows 服务的制作安装和删除
- Windows 7 系统中开启 ASP.NET State Service 服务的方法
- 【转载】将普通应用程序制作成系统服务
- 操作Windows注册表的简单的Python程序制作教程