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