如何以Windows Service的方式运行Python程序

发布时间:2021-11-02 17:29:44 作者:柒染
来源:亿速云 阅读:298

这期内容当中小编将会给大家带来有关如何以Windows Service的方式运行Python程序,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

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程序代码放入相应位置就可以了:

  1. #SmallestService.py  

  2. #  

  3. #AsampledemonstratingthesmallestpossibleservicewritteninPython.  

  4.  

  5. importwin32serviceutil  

  6. importwin32service  

  7. importwin32event  

  8.  

  9. classSmallestPythonService(win32serviceutil.ServiceFramework):  

  10. _svc_name_="SmallestPythonService" 

  11. _svc_display_name_="ThesmallestpossiblePythonService" 

  12. def__init__(self,args):  

  13. win32serviceutil.ServiceFramework.__init__(self,args)  

  14. #Createaneventwhichwewillusetowaiton.  

  15. #The"servicestop"requestwillsetthisevent.  

  16. self.hWaitStop=win32event.CreateEvent(None,0,0,None)  

  17.  

  18. defSvcStop(self):  

  19. #Beforewedoanything,telltheSCMwearestartingthestopprocess.  

  20. self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)  

  21. #Andsetmyevent.  

  22. win32event.SetEvent(self.hWaitStop)  

  23.  

  24. defSvcDoRun(self):

  25. #把你的程序代码放到这里就OK了
    win32event.WaitForSingleObject(self.hWaitStop,win32event.INFINITE)

    if__name__=='__main__':
    win32serviceutil.HandleCommandLine(SmallestPythonService)
    #括号里的名字可以改成其他的,必须与class名字一致; 

接下来,只要安装一下服务,cmd下运行:SmallestService.pyinstall就行了。

这样,你就可以在windows服务管理器里找到一个名叫"ThesmallestpossiblePythonService"的服务了,设成自动启动,就会开机自动启动并且一直在后台运行了。(眼不见心不烦,)

不过,这样虽然达到目的了,但还是发现个小问题,就是要是想停止该服务,关闭的进度条就愣在那里不动了,必须在进程管理器里把pythonservice.exe关掉才行,这个bug一直没法解决,就是关闭服务的同时,要把监视待机事件取消,否则退不出这个死循环。

上述就是小编为大家分享的如何以Windows Service的方式运行Python程序了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. LXC容器如何以本地方式运行X Server
  2. Windows 下后台运行 Python 程序

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python windows service

上一篇:为什么strace在Docker容器中无法工作

下一篇:mysql中pt-online-schema-change怎么用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》