SimpleXMLRPCServer and Threading
jeff at jmcneil.net
Thu Mar 29 22:57:48 CEST 2007
I'd have to go dig into the library code again as I haven't been in there
since I did this myself a few months ago, but I believe you're correct. If
you inherit from ThreadingMixIn, it will create a new thread for each
incoming request. I believe it's the same way the standard
ThreadingTCPServer/ThreadingUDPServer classes work... It will create a new
thread for each request, there's no pooling.
The ThreadingMixIn class overrides process_request, which TCPServer will
call to handle each request. The process_request method, in turn, creates a
new instance of your handler which is responsible for the RPC dispatching.
On 3/29/07, Laszlo Nagy <gandalf at designaproduct.biz> wrote:
> Jeff McNeil wrote:
> > This is off of memory so I apologize if I don't get all of the details
> > The base SimpleXMLRPCServer uses TCPServer as it's server component
> > and SimpleXMLXMLRPCRequestHandler as it's handler. The handler is a
> > subclass of BaseHTTPRequestHandler, which itself doesn't handle any
> > multithreading. You need to use one of the *MixIn classes if you want
> > to handle concurrent requests.
> Does it mean that, if I subclass from ThreadingMixIn then my exported
> functions will be called from different threads? I created many multi
> threaded servers, based on TCPServer, but I'm not sure about
> XMLRPCServer. I used to create my own handler class and in that case, a
> new handler instance was created for each request, then a new thread was
> created and handle_request was called from that new thread. I guess that
> in this case, a new SimpleXMLXMLRPCRequestHandler is created for each
> request and a new thread is started.... but I'm not sure. Please help us
> By the way, we should have __server__ examples in the documentation of
> xmlrpclib, right? What is the right way of contributing an example?
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Python-list