我正在编写下面的python win32服务是我的代码片段,当我编译它工作的服务但我需要去services.msc并手动启动它。
当我安装serivce时有没有选项:myservice.exe install它会自动启动吗?
下面的是我的代码片段:
import win32serviceutil
import win32service
import win32event
class SmallestPythonService(win32serviceutil.ServiceFramework):
_svc_name_ = "ser_name"
_svc_display_name_ = "ser_descryption"
#_svc_description_='ddd'
def __init__(self, args):
win32serviceutil.ServiceFramework.__init__(self, args)
self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)
def SvcStop(self):
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
win32event.SetEvent(self.hWaitStop)
def SvcDoRun(self):
win32event.WaitForSingleObject(self.hWaitStop, win32event.INFINITE)
if __name__=='__main__':
win32serviceutil.HandleCommandLine(SmallestPythonService)
答案 0 :(得分:12)
使用myservice.exe --startup=auto install
安装服务并将其设置为自动启动。
答案 1 :(得分:2)
我会看看这个ActiveState recipe。它是win32serviceutil的一个包装器,展示了如何自动启动服务。
答案 2 :(得分:1)
您可以将sc.exe
与create
命令一起使用。
sc create MyPyService binPath= "C:\myservice.exe" DisplayName= "Some Python Service"
有关Microsoft KB251192的详情。
win32serviceutil 也可以使用InstallService()
函数。
答案 3 :(得分:-1)
@Maciejg对我不起作用,这里的解决方案是使用py2exe自动启动我的服务:
calendar.py/pyc