At Thursday 23/11/2006 06:52, Rudy Schockaert wrote:

After some Googling I found a post of someone who wanted to do exactly
as what I want to do now.
There is however a problem in his code that makes the service fails
after the first connection. I slightly modified his code and now I can
run the service longer before I run into trouble.
I then tried making the SimpleXMLRPCServer multi-threaded, hoping the
problem would disappear, but no avail.
The code is as follows:
The commented part in the while loop is from the original code.

The original (commented-out) code should be fine. You have to wait for 2 events: the service stop signal, or an incoming connection.
Anyway, you always have to catch exceptions; override handle_error at least.

Another approach (not involving events) would be to set a (not so big) timeout on the socket, and test for self.stop_requested on each iteration.

        server = ThreadedSimpleXMLRPCServer(("", 8080))
        object = OBJECT()
        server.register_instance(object)
        self.socket = server.socket

        while 1:
            #win32file.WSAEventSelect(server,
self.hSockEvent,win32file.FD_ACCEPT)
            #rc =
win32event.WaitForMultipleObjects((self.hWaitStop,self.hSockEvent), 0,
win32event.INFINITE)
            #if rc == win32event.WAIT_OBJECT_0:
            #    break
            #else:
            #    server.handle_request()
            #    win32file.WSAEventSelect(server,self.hSockEvent, 0)
            #    #server.serve_forever()  ## Works, but breaks the


--
Gabriel Genellina
Softlab SRL
__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis! ¡Abrí tu cuenta ya! - http://correo.yahoo.com.ar
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to