Help needed with Windows Service in Python

Edward Kozlowski ekozlowski1 at gmail.com
Thu Sep 2 21:55:19 CEST 2010


On Sep 2, 2:38 pm, Ian <hobso... at gmaiil.com> wrote:
>   On 02/09/2010 20:06, Edward Kozlowski wrote:
>
>
>
> > On Sep 2, 10:22 am, Ian Hobson<i... at ianhobson.co.uk>  wrote:
> >> Hi All,
>
> >> I am attempting to create a Windows Service in Python.
>
> >> I have the framework (from Mark Hammond and Andy Robinason's book)
> >> running - see below. It starts fine - but it will not stop. :(
>
> >> net stop "Python Service"
>
> >> and using the services GUI both leave the services showing it as "stopping"
>
> >> I guess this means SvcStop is called but it is not enough to get it out
> >> of the machine.
>
> >> Does anyone know why not?
>
> >> Python 2.7 with win32 extensions, sunning on Windows 7.
>
> >> Many thanks
>
> >> Ian
>
> >> the (complete) source code is
> >> #!/usr/bin/env python
> >> # coding=utf8
> >> #   service.py  = testing services and Named pipes
> >> #
> >> import win32serviceutil
> >> import win32service
> >> import win32event
> >> class PythonService(win32serviceutil.ServiceFramework):
> >>     _svc_name_ = "Python Service"
> >>     _svc_display_name_ = "Test Service in Python"
> >>     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)
> >>       wind32event.SetEvent(self.hWaitStop)
> >>     def SvcDoRun(self):
> >>       win32event.WaitForSingleObject(self.hWaitStop,win32event.INFINITE)
> >> if __name__ == '__main__':
> >>     win32serviceutil.HandleCommandLine(PythonService)
> > Looks to me like there may be a typo in your code.
>
> > You probably meant win32event.SetEvent(self.hWaitStop), not
> > wind32event.
>
> > Regards,
> > -Edward Kozlowski
>
> A huge big thank you Edward.  That was the problem.
>
> Regards
>
> Ian

You're most welcome.

If you're looking at running services in Windows using Python, one
other hangup I ran into was that my services would freeze for no
reason.  At Pycon '09, I learned that there were buffers for stdout
and stderr that were filling.  I wish I could remember who gave the
talk that included the jewel of knowledge, because I'd love to give
credit where it's due...

After I redirected stdout and stderr to files, my problems with the
services freezing went away.

Regards,
-Edward Kozlowski



More information about the Python-list mailing list