Stopping SocketServer on Python 2.5
David
David
Wed Mar 11 14:28:08 EDT 2009
On 2009-03-11 04:36:29 +0000, "Mark Tolonen" <metolone+gmane at gmail.com> said:
>
> "David George" <dave at eatmyhat.co.uk> wrote in message
> news:00150e67$0$27956$c3e8da3 at news.astraweb.com...
>> Hi guys,
>>
>> I've been developing some code for a university project using Python.
>> We've been working on an existing codebase, cleaning it up and removing
>> dead wood.
>>
>> We decided to make some changes to internal message handling by using a
>> SocketServer, which worked great when we were using 2.6, as we could
>> simply call its shutdown() method when we wanted to stop it from
>> 'serving forever'.
>>
>> Unfortunately, we've now needed to downgrade to python 2.5 to
>> accomodate the libtorrent python bindings we need to use as part of the
>> project.
>>
>> So, my question is, is there any way to stop a SocketServer that's been
>> told to server forever in python 2.5?
>
> Sure, derive a class from one of the classes in SocketServer, and
> override the methods that implement the shutdown behavior in 2.6.
>
> -Mark
Based on what you guys have said i've had a look at the code for
serve_forever() in both 2.5 and 2.6, and tried to create my own derived
class in this manner:
class MBThreadingTCPServer(SocketServer.ThreadingTCPServer):
def __init__(self, address_tuple, handler):
SocketServer.ThreadingTCPServer.__init__(self, address_tuple, handler)
self.__serving = True
def serve_forever(self):
while self.__serving:
SocketServer.ThreadingTCPServer.handle_request(self)
def shutdown(self):
self.__serving = False
Don't worry about the MB thing, it's just related to the name of our project.
I don't think i've done this right, but i've tried to implement the
serve_forever() functionality in my derived class, and also add the
shutdown() method so i can stop it.
Does this appear to be the right way to do things?
Cheers,
Dave
More information about the Python-list
mailing list