eching wrote: > I'm running CGIHTTPServer with the serve_forever method and I cannot > get the darn thing to stop unless I kill the command prompt its > running in. I searched for similar posts here and found this: > > http://groups.google.com/group/comp.lang.python/browse_thread/thread/6879d74ad7679349/ff7d0aa2be964767?lnk=gst&q=HTTPServer+kill#ff7d0aa2be964767 > > But there doesn't seem to be a definitive answer. I tried one of the > last proposed solutions: > > class Server(SocketServer.ThreadingMixIn, SocketServer.TCPServer): > pause = 0.25 > allow_reuse_address = True > > def __init__(self, server_address, RequestHandlerClass): > SocketServer.TCPServer.__init__(self, server_address, > RequestHandlerClass) > self.socket.settimeout(self.pause) > self.serving = 1 > ... > > def serve_forever(self): > while self.serving: > self.handle_request() > > And that worked, but the last post in the thread suggested '...this > would cause timeouts in the middle of handling request whenever a > client is slow' > > Can anyone comment on this solution or have other possible solutions? > Eventually I probably will want this to run as a windows service to > serve up some internal apps, so it would be great if I could the > server to shutdown gracefully. > > Thanks in advance, > Eric
It really might be a good idea to patch serve_forever in the library to allow handlers to raise a specific StopServing exception. At the moment IIRC the position is that there's a generic trap of pretty much all exceptions, which isn't too helpful. I suppose a counter-argument might be that "forever" has a defined meaning, and the method is correctly named, but that's mere semantics. regards Steve -- Steve Holden +1 571 484 6266 +1 800 494 3119 Holden Web LLC http://www.holdenweb.com/ -- http://mail.python.org/mailman/listinfo/python-list