I'd suggest that remove almost all code from your __init__ function, and instead put it all in SvcDoRun - once SvcDoRun has been called we have already reported success to the service control manager and taking a little time to, eg, enumerate the registry will not cause problems.

HTH,

Mark

On 19/05/2010 11:36 PM, Boris Perez Canedo wrote:
Hi everybody.

I'm new in the list and I'm not an english speaking person. If you see a
lot of mistakes please excuse me I'm trying my best.

I have a compiled python service which I can install, remove, start and
stop without errors (manually). The problem ocurrs when I change the
start type and set it to "auto". Then I restart my computer to see if
the service starts correctly. I see two errors informed by the service
control manager:

1)Timeout (30000 ms.) for connection to WBEM Inv service.

And right after that.

2)The service did not responde to the start or control request in a
timely fashion.

If I go and perform an explicit start, keeping the start type in auto,
the service starts and no errors are informed.

I don't understand why the operating system can not start the service by
itself.

This is the output for "sc interrogate" on my service in case it helps:

SERVICE_NAME: WBEMInv
TYPE : 10 WIN32_OWN_PROCESS
STATE : 4 RUNNING
(STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0


My python code:

import win32serviceutil
import win32service
import win32event
import servicemanager
import os

def system():
# my system implementation.

class XmlRPCService(win32serviceutil.ServiceFramework):
_svc_name_ = 'WBEMInv'
_svc_display_name_ = "WBEM Inventory"
_svc_description_ = 'Servicio xml rpc para realizar inventario de
ordenadores conectados a redes hibridas'
def __init__(self, args):
key =
_winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,"SOFTWARE\\UCf\\WBEMInv\\Settings")
path = _winreg.EnumValue(key, 0)[1]
os.chdir(path) # I dont want the working directory to be system32.
_winreg.CloseKey(key)
win32serviceutil.ServiceFramework.__init__(self, args)
self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)
def SvcStop(self):
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
sys.stopservice = "true"
win32event.SetEvent(self.hWaitStop)
def SvcDoRun(self):
system()

if __name__=='__main__':
win32serviceutil.HandleCommandLine(XmlRPCService)

Thank you very much.

Boris.

------------------------------------------------------------------------

Convencion Internacional de Psicologia y Ciencias Sociales y Humanas

Cienfuegos, Cuba, del 19 al 22 de abril del 2011

http://promociondeeventos.sld.cu/hominis2011



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

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

Reply via email to