python怎么操作windows服务?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python怎么操作windows服务?相关的知识,希望对你有一定的参考价值。

我有个程序,必须不间断运行,它是以windows服务形式启动的,但是有时候会自动停掉,我要做的是,用python写个程序,每隔一段时间检查一下这个服务是否启动,如果那个服务没有启动,就启动它。

你可以使用 pythoncom 库,它包含ActivePython 或者可以安装pywin32 (Python for Windows extensions).

下面是一个简单操作服务的例子:

import pythoncom

import win32serviceutil

import win32service

import win32event

import servicemanager

import socket



class AppServerSvc (win32serviceutil.ServiceFramework):

    _svc_name_ = "TestService"

    _svc_display_name_ = "Test Service"


    def __init__(self,args):

        win32serviceutil.ServiceFramework.__init__(self,args)

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

        socket.setdefaulttimeout(60)


    def SvcStop(self):

        self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)

        win32event.SetEvent(self.hWaitStop)


    def SvcDoRun(self):

        servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,

                              servicemanager.PYS_SERVICE_STARTED,

                              (self._svc_name_,''))

        self.main()


    def main(self):

        pass


if __name__ == '__main__':

    win32serviceutil.HandleCommandLine(AppServerSvc)

你的代码需要放在mian()方法里面,通常会有一些情况通过检查你在 SvcStop 方法中设置的标志,然后中断循环

参考技术A 安装第三方扩展pywin32-214.win32-py2.5.exe
就可以操作 win下的程序来
比如ie浏览器 等。。。
参考技术B 在windows中操作服务,可以使用os模块

查询一个服务状态的命令为:
sc query [servicename]

如查询WebClient服务状态:

C:\Documents and Settings\Administrator>sc query WebClient

SERVICE_NAME: WebClient
TYPE : 10 WIN32_OWN_PROCESS
STATE : 4 RUNNING
(STOPPABLE,NOT_PAUSABLE,ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0

于是我们这个python脚本的切入点可以先查询某服务的状态,如果状态不是RUNNING的话,就启动它,关键代码如下:

result = os.popen("sc query WebClient")
if not "RUNNING" in result:
os.system("sc start WebClient")

让这个脚本定时运行即可,希望能帮助到你本回答被提问者采纳
参考技术C 1、安装pywin32:http://pypi.python.org/pypi/pywin32/210
2、参考文章:http://www.room702.cn/index.php/archives/419

以上是关于python怎么操作windows服务?的主要内容,如果未能解决你的问题,请参考以下文章

python怎么操作windows服务?

windows服务

列出windows 2003系统提供的网络服务,并对其应用加以说明?

python3+selenium3.13的简单操作

ElasticSearch安装为Windows服务

windows下安装python和pycharm