Python win32 сервис запускается автоматически - PullRequest
9 голосов
/ 27 декабря 2010

Я пишу сервис python для win32, ниже приведен фрагмент моего кода, когда я компилирую сервис, он работает, но мне нужно перейти на services.msc и запустить его вручную.

Есть ли вариант, когда я устанавливаю serivce: myservice.exe, установка запускается автоматически?

ниже приведен фрагмент моего кода:

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 ]

12 голосов
/ 02 октября 2014

Используйте myservice.exe --startup=auto install для установки службы и настройки ее автоматического запуска.

2 голосов
/ 27 декабря 2010

Я бы взглянул на этот рецепт ActiveState .Это оболочка для win32serviceutil, которая показывает, как автоматически запускать службу.

1 голос
/ 27 декабря 2010

Вы можете использовать sc.exe с командой create.

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

Подробнее об этом на Microsoft KB251192 .

win32serviceutil также имеет функцию InstallService(), которую вы можете использовать.

0 голосов
/ 03 марта 2016

@ Maciejg у меня не работает, вот решение для автоматического запуска моего сервиса, построенного с py2exe:

myservice.exe -auto -install
...