This is a very odd problem. I have a module that I want to package up
as a service - it has a "Registry" class, with mainloop and stop
methods (the former sits in an infinite loop, the latter signals the
loop to terminate). I am trying to package this up as a simple
service, as follows:
import win32serviceutil, win32service
import registry
class RegistryQueryService(win32serviceutil.ServiceFramework):
_svc_name_ = "RegistryQueryService"
_svc_display_name_ = "Oracle Registry Query Service"
def __init__(self, args):
win32serviceutil.ServiceFramework.__init__(self, args)
def SvcStop(self):
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
self.reg.stop()
def SvcDoRun(self):
self.reg = registry.Registry()
self.reg.mainloop()
if __name__=='__main__':
win32serviceutil.HandleCommandLine(RegistryQueryService)
However, when I install and debug the service, and hit Ctrl-C to stop
it, I get the error "Registry instance has no attribute 'stop'"!!!
Here's a dump of the command output:
D:\Data\RegQueries
>service.py install
Installing service RegistryQueryService to Python class D:\Data\RegQueries\servi
ce.RegistryQueryService
Service installed
D:\Data\RegQueries
>service.py debug
Debugging service RegistryQueryService - press Ctrl+C to stop.
Stopping debug service.
Stopping debug service.
Error 0xC000000B - The Python service control handler failed.
File "C:\Apps\Python24\lib\site-packages\win32\lib\win32serviceutil.py", line
701, in ServiceCtrlHandler
self.SvcStop()
File "D:\Data\RegQueries\service.py", line 14, in SvcStop
exceptions.AttributeError: Registry instance has no attribute 'stop'
I'm baffled. I've added debug prints displaying my registry object,
its dir(), the stop method, and they all look fine. Why can't
SvcStop() find the method???
Thanks for any help.
Paul.
_______________________________________________
Python-win32 mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-win32