Python win32服务自动启动

时间:2010-12-27 13:05:48

标签: python windows-services pywin32

我正在编写下面的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)

4 个答案:

答案 0 :(得分:12)

使用myservice.exe --startup=auto install安装服务并将其设置为自动启动。

答案 1 :(得分:2)

我会看看这个ActiveState recipe。它是win32serviceutil的一个包装器,展示了如何自动启动服务。

答案 2 :(得分:1)

您可以将sc.execreate命令一起使用。

sc create MyPyService binPath= "C:\myservice.exe" DisplayName= "Some Python Service"

有关Microsoft KB251192的详情。

win32serviceutil 也可以使用InstallService()函数。

答案 3 :(得分:-1)

@Maciejg对我不起作用,这里的解决方案是使用py2exe自动启动我的服务:

calendar.py/pyc