SimpleXMLRPCServer and Threading

Jeff McNeil jeff at jmcneil.net
Thu Mar 29 16:57:48 EDT 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.

-Jeff

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
> right.
> >
> > 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
> out.
>
> By the way, we should have __server__ examples in the documentation of
> xmlrpclib, right? What is the right way of contributing an example?
>
> Best,
>
>   Laszlo
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20070329/0e4e9626/attachment.html>


More information about the Python-list mailing list