Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python win32 service starting automatically

I am writing a python win32 service below are snippet of my code when i compile the service it works but i need to go to services.msc and start it manually.

Is there an option when i install the serivce by : myservice.exe install it will starts automaticly ?

below are snippet of my code :

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)
like image 258
AKM Avatar asked Dec 27 '10 13:12

AKM


3 Answers

Use myservice.exe --startup=auto install to install the service and set it to be started automatically.

like image 196
Maciejg Avatar answered Oct 09 '22 17:10

Maciejg


I would take a look at this ActiveState recipe. It's a wrapper around the win32serviceutil that shows how to auto-start the service.

like image 22
Mark Avatar answered Oct 09 '22 16:10

Mark


You can use sc.exe with the create command.

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

More on this at Microsoft KB251192.

win32serviceutil also has a InstallService() function you might be able to use.

like image 32
kichik Avatar answered Oct 09 '22 17:10

kichik