On 2009-03-11 04:36:29 +0000, "Mark Tolonen" <metolone+gm...@gmail.com> said:


"David George" <d...@eatmyhat.co.uk> wrote in message news:00150e67$0$27956$c3e8...@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

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to