以Windows Service的方式运行Python程序
本文将介绍如何以Windows Service的方式运行Python程序,语句很简单,要用到Tim Golden编写的wmi.py 和 Mark Hammond的win32 extensions for Python ,两个缺一不可。
- 作者:Eineseite来源:cnblogs|2009-07-02 16:36
Python程序代码
- importwmi
- importos
- c=wmi.WMI()
- watcher=c.Win32_PowerManagementEvent.watch_for(EventType=7)#监视待机事件的语句;
- whileTrue:
- os.system("kdlj.vbs")#运行“连接宽带“的程序,这里还是用了上次那位仁兄的vbs代码;
- watcher()
由于运行时Python程序的控制台窗口一直在那儿,看着有点碍事儿。于是乎想到要是能把他以windowsservice的方式运行,就像其他在windows服务管理器里的程序一样。
最终,在"PythonProgrammingOnWin32"(byMarkHammond)这本书里找到了相关介绍,它里
面有一个简单的模版,把Python程序代码放入相应位置就可以了:
- #SmallestService.py
- #
- #AsampledemonstratingthesmallestpossibleservicewritteninPython.
- importwin32serviceutil
- importwin32service
- importwin32event
- classSmallestPythonService(win32serviceutil.ServiceFramework):
- _svc_name_="SmallestPythonService"
- _svc_display_name_="ThesmallestpossiblePythonService"
- def__init__(self,args):
- win32serviceutil.ServiceFramework.__init__(self,args)
- #Createaneventwhichwewillusetowaiton.
- #The"servicestop"requestwillsetthisevent.
- self.hWaitStop=win32event.CreateEvent(None,0,0,None)
- defSvcStop(self):
- #Beforewedoanything,telltheSCMwearestartingthestopprocess.
- self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
- #Andsetmyevent.
- win32event.SetEvent(self.hWaitStop)
- defSvcDoRun(self):
#把你的程序代码放到这里就OK了
win32event.WaitForSingleObject(self.hWaitStop,win32event.INFINITE)if__name__=='__main__':
win32serviceutil.HandleCommandLine(SmallestPythonService)
#括号里的名字可以改成其他的,必须与class名字一致;
接下来,只要安装一下服务,cmd下运行:SmallestService.pyinstall就行了。
这样,你就可以在windows服务管理器里找到一个名叫"ThesmallestpossiblePythonService"的服务了,设成自动启动,就会开机自动启动并且一直在后台运行了。(眼不见心不烦,)
不过,这样虽然达到目的了,但还是发现个小问题,就是要是想停止该服务,关闭的进度条就愣在那里不动了,必须在进程管理器里把pythonservice.exe关掉才行,这个bug一直没法解决,就是关闭服务的同时,要把监视待机事件取消,否则退不出这个死循环。要是哪位高人看到了,希望可以指点一二。
【编辑推荐】
- 浅谈Python和C#中的Run As代码实现方式
- 脚本语言排行榜 PHP、Ruby和Python领先
- Python选择Mercurial Hg版本控制系统
- 在Python中解决中英文混杂出错的问题
- 使用Oracle数据库实现Python数据持久
点赞 0
- 大家都在看
- 猜你喜欢
编辑推荐
- 24H热文
- 一周话题
- 本月最赞
- 坐在马桶上看算法:快速排序5个强大的Java分布式缓存框架推荐Java 中常用缓存Cache机制的实现我用Python玩小游戏“跳一跳”,瞬间称霸了朋友圈!java.net.SocketException四大异常解决方案Java中Runnable和Thread的区别Java程序员新手老手都离不开八大开发工具成为Java顶尖程序员 ,看这11本书就够了
- 坐在马桶上看算法:快速排序5个强大的Java分布式缓存框架推荐我用Python玩小游戏“跳一跳”,瞬间称霸了朋友圈!Java 中常用缓存Cache机制的实现Java中Runnable和Thread的区别Java数组声明、创建、初始化java.net.SocketException四大异常解决方案坐在马桶上看算法:只有五行的Floyd最短路算法
- 坐在马桶上看算法:快速排序5个强大的Java分布式缓存框架推荐Java 中常用缓存Cache机制的实现java.net.SocketException四大异常解决方案Java数组声明、创建、初始化Java中Runnable和Thread的区别坐在马桶上看算法:只有五行的Floyd最短路算法Java程序员新手老手都离不开八大开发工具
视频课程+更多

-
HTML5和CSS3新特性视频教程
讲师:Helen老师 - 姚环415005人学习过

-
Linux iptables防护墙终极讲解实战视频课程
讲师:韩立刚47936人学习过

-
企业级邮件服务器Exchange 2010视频课程
讲师:韩立刚83450人学习过
最新专题+更多
- 精选博文
- 论坛热帖
- 下载排行
读 书 +更多

软件设计师考试考前冲刺预测卷及考点解析
本书依据最新版《软件设计师考试大纲》的考核要求,深入研究了历年软件设计师考试试题的命题风格和试题结构,对考查的知识点进行了提炼,并...

-
订阅51CTO邮刊
点击这里查看样刊





