Zdenek Mejzlik wrote:
> Hi.
> 
> This post is similar to one sent by Tom Dalton 12 June 2007. 
> Unfortunately, appropriate solution of his problem was not published yet.
> 
> I'm trying to create a simple windows service. I found code of simple 
> service on the Internet. Service works well as long as I'm logged in. 
> But as soon as I log out the service is interrupted and windows event 
> log contains the following message:
> 
> The instance's SvcRun() method failed
> File "C:\Python25\Lib\site-packages\win32\lib\win32serviceutil.py", line 
> 785, in SvcRun
>  self.SvcDoRun()
> File "C:\altworx_repository\wwwroot\cgi-bin\pokus\aservice.py", line 20, 
> in SvcDoRun
>  time.sleep(10)
> <type 'exceptions.IOError'>: (4, 'Interrupted function call')
> 
> Service is running on Windows XP Prof with Python 2.5. Code of the 
> service is bellow. Has anyone any idea what's wrong? Thank you for any 
> little help.
> 
> import win32service
> import win32serviceutil
> import time
> import win32api
> import win32con
> 
> class aservice(win32serviceutil.ServiceFramework):
> _svc_name_ = "aservice"
> _svc_display_name_ = "aservice - It Does nothing"
> 
> def __init__(self,args):
>    win32serviceutil.ServiceFramework.__init__(self,args)
>    self.isAlive = True
> 
> def SvcDoRun(self):
>    import servicemanager
> 
>    while self.isAlive:
>       servicemanager.LogInfoMsg("aservice - is alive and well")
>       time.sleep(10)
>    servicemanager.LogInfoMsg("aservice - Stopped")
> 
> def SvcStop(self):
>    import servicemanager
> 
>    servicemanager.LogInfoMsg("aservice - Recieved stop signal")
>    self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
>    self.isAlive = False
> 
> def ctrlHandler(ctrlType):
> return True
> 
> if __name__ == '__main__':
> win32api.SetConsoleCtrlHandler(ctrlHandler, True)
> win32serviceutil.HandleCommandLine(aservice)
> 
> 
> This code is slightly modified. The original code is on 
> http://essiene.blogspot.com/2005/04/python-windows-services.html.
> 
> Z.

The service needs to be in an alertable state to receive control signals.
Try win32api.SleepEx(10000, True) in place of time.sleep.

           Roger

_______________________________________________
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32

Reply via email to