How can I kill CGIHTTPServer ?
Steve Holden
steve at holdenweb.com
Mon Feb 11 10:26:22 EST 2008
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/
More information about the Python-list
mailing list