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

Reply via email to