svcdorun运行结束就表示系统服务“停止”,怎么会重新运行?
上面的程序在开始添加两行代码:
import
time
timeout
=
10
#此处是延时时间,单位秒
改写部分代码:
def
__init__(self,
args):
win32serviceutil.serviceframework.__init__(self,
args)
self.running
=
true
def
svcdorun(self):
while
self.running:
#调用你的程序代码或者函数,以下的部分是计时代码
i
=
0
while
self.running
and
(i<timeout):
time.sleep(1)
i
+=
1
def
svcstop(self):
self.running
=
false
这三个函数完全替代原有的代码
代码
import
win32event
可以去除
计时代码之所以不直接写
time.sleep(timeout),主要原因是当timeout比较长时,会引起停止服务时失败,windows系统在停止服务时会有一定的等待时间,但时间不长,现在的计时代码是一秒钟检查一次是否停止,肯定不会带来问题。
示例代码如下,可以参考:import wmi
class servicePython():
def __init__(self, serviceName):
self.c = wmi.WMI ()
self.serviceName = serviceName
def setServiceName(self, serviceName):
self.serviceName = serviceName
def getStatus(self):
srv = c.Win32_Service (name=self.serviceName)
if srv != []:
return c.Status
return False