[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.python

How can I kill CGIHTTPServer ?

eching

2/11/2008 6:18:00 AM

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#ff7d0a...

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
3 Answers

Steve Holden

2/11/2008 3:26:00 PM

0

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#ff7d0a...
>
> 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.hold...

Gabriel Genellina

2/11/2008 4:25:00 PM

0

En Mon, 11 Feb 2008 04:18:04 -0200, eching <bingopajama@hotmail.com>
escribi�:

> 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:

See this thread from last year; it's about XMLRPC but the idea is the same.
http://groups.google.com/group/comp.lang.python/browse_thread/thread/c48f06...

--
Gabriel Genellina

eching

2/12/2008 4:20:00 AM

0

On Feb 11, 10:24 am, "Gabriel Genellina" <gagsl-...@yahoo.com.ar>
wrote:
> En Mon, 11 Feb 2008 04:18:04 -0200, eching <bingopaj...@hotmail.com>
> escribi?:
>
> > 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:
>
> See this thread from last year; it's about XMLRPC but the idea is the same..http://groups.google.com/group/comp.lang.python/browse_thre......
>
> --
> Gabriel Genellina

That looks about like what I need. Thanks for the link!