[python-win32] Python Service error 1053: the service did notrespond to the start or control request in a timely fashion

Robert O'Connor evilgordita at cox.net
Sat Jan 17 03:31:50 CET 2009


From: "Richard Zinn" <ricozinn at gmail.com>
> Hi, I've implemented the MyService.py example from the py2exe samples
> directory using Python2.6, on my Windows XP SP2, and I get the error
> 1052...did not respond in a timely fashion immediately when I run the
> MyService.py, or the MyService.exe, or if I install it as a service using 
> an
> NSIS installer script I wrote, and start it using the windows service
> manager.
> Any ideas?  Here is the code reduced to just the essentials:
>
> import win32serviceutil
> import win32service
> import win32event
> import win32evtlogutil
>
> class MyService(win32serviceutil.ServiceFramework):
>    _svc_name_ = "MyService"
>    _svc_display_name_ = "My Service"
>    _svc_deps_ = ["EventLog"]
>    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):
>        import servicemanager
>        log("running")
>
>        win32event.WaitForSingleObject(self.hWaitStop, win32event.INFINITE)
>        log("stopped")
>
> if __name__ == '__main__':
>    win32serviceutil.HandleCommandLine(MyService)
>
> I've seen other posters with similar problems, but with theirs it doesn't
> work in the .exe, but in my case it doesn't work when I run the .py 
> either.
> The traceback in python says:
>> python MyService.py
>
> Collecting Python Trace Output...
> Traceback (most recent call last):
>  File "C:\Python26\Lib\site-packages\win32\lib\win32serviceutil.py", line
> 399,
> in StartService
>    win32service.StartService(hs, args)
> pywintypes.error: (1053, 'StartService', 'The service did not respond to 
> the
> sta
> rt or control request in a timely fashion.')
>
>
> Thanks in advance,
> Richard

If SvcDoRun is run in it's own thread, then I suspect the import residing 
inside that function.  If I remember correctly, Python's import mechanism 
causes the thread where the import takes place to deadlock, so you should 
always perform an import inside your main thread.  Try importing 
servicemanager from the top of your script, instead of inside of SvcDoRun. 
Then your example should start throwing exceptions because it can't find 
'log.'  :-) 



More information about the python-win32 mailing list