SimpleXMLRPCServer interruptable?
Bret
bret.wortman at gmail.com
Wed Dec 5 16:20:35 EST 2007
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....
On Dec 5, 2:00 pm, Bret <bret.wort... at gmail.com> wrote:
> I'm coming back to Python after an absence and it's surprising how
> many things I've forgotten since wandering (against my will) into Java
> land.
>
> Anyway, I have a need for a way to make SimpleXMLRPCServer
> interruptable. Basically, I have a main server that, in response to
> certain RPC calls, creates additional servers on different ports. I
> then need to be able to shut these additional servers down.
>
> I've got something like this in the __init__ of the class which
> contains the spawned servers:
>
> def __init__(self, host, port):
> :
> :
> server = SimpleXMLRPCServer((host, port))
> :
> : Bunch of server.register_function calls
> :
> def serverWrapper():
> try:
> while True:
> server.handle_request()
> except:
> pass
>
> One of the methods that I register is:
>
> def shutdown(self):
> raise "Quitting time"
>
> Through watching logs and such I can see that the shutdown() method is
> getting called, but the loop isn't getting broken. I've done
> something like this before in a previous job (so I don't have my
> source in front of me, more's the pity) and am hoping someone can
> chime in with a good idea.
>
> Thanks in advance!
>
> Bret Wortman
More information about the Python-list
mailing list