SimpleXMLRPCServer interruptable?

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Wed Dec 5 19:22:06 EST 2007


En Wed, 05 Dec 2007 18:20:35 -0300, Bret <bret.wortman at gmail.com> escribió:

> I just tried changing this so that I now have a threading.Event()
> called self.done, which is set within the body of the shutdown()
> method.  The serverWrapper loop now looks like this:
>
> def serverWrapper():
>     while True:
>         server.handle_request()
>         if self.done.isSet():
>             break
>
> This works, but only if I follow the shutdown() rpc call a few seconds
> later with ... something else to cause handle_request() to complete
> again.  Obviously, not quite the right approach....

You could try setting a reasonable timeout on the listening socket; I  
would override the server_bind method, calling self.socket.settimeout(xxx)  
before calling the inherited method. I've never actually done it with a  
SimpleXMLRPCServer, but *should* work. Don't use a very small timeout,  
because it affects *all* subsequent operations.

-- 
Gabriel Genellina




More information about the Python-list mailing list