Help needed with Windows Service in Python

I

Ian Hobson

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)
 
I

Ian

Il Thu, 02 Sep 2010 16:22:04 +0100, Ian Hobson ha scritto:

You may try to give a WaitHint parameter to ReportServiceStatus call,
otherwise the Service Manager will expect the service is stopped istantly.

self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING, 1000)


David
Thanks David.

Sadly that makes no difference.
 
E

Edward Kozlowski

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
 
I

Ian

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
 
E

Edward Kozlowski

  On 02/09/2010 20:06, Edward Kozlowski wrote:






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
 
I

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
Hi Edward,

Thanks for the heads up. That is really worth knowing.

Ian
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,060
Latest member
BuyKetozenseACV

Latest Threads

Top