How can I kill CGIHTTPServer ?

Discussion in 'Python' started by eching, Feb 11, 2008.

  1. eching

    eching Guest

    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...67?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
     
    eching, Feb 11, 2008
    #1
    1. Advertising

  2. eching

    Steve Holden Guest

    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...67?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/
     
    Steve Holden, Feb 11, 2008
    #2
    1. Advertising

  3. En Mon, 11 Feb 2008 04:18:04 -0200, eching <>
    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/c48f06ef80e07a39

    --
    Gabriel Genellina
     
    Gabriel Genellina, Feb 11, 2008
    #3
  4. eching

    eching Guest

    On Feb 11, 10:24 am, "Gabriel Genellina" <>
    wrote:
    > En Mon, 11 Feb 2008 04:18:04 -0200, eching <>
    > 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/...
    >
    > --
    > Gabriel Genellina


    That looks about like what I need. Thanks for the link!
     
    eching, Feb 12, 2008
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Peter Hansen

    Re: Securing PyDoc and CGIHTTPserver

    Peter Hansen, Jul 10, 2003, in forum: Python
    Replies:
    7
    Views:
    443
    Peter Hansen
    Jul 15, 2003
  2. Shane Hathaway

    Re: Securing PyDoc and CGIHTTPserver

    Shane Hathaway, Jul 10, 2003, in forum: Python
    Replies:
    1
    Views:
    383
    Shane Hathaway
    Jul 11, 2003
  3. vincent delft

    CGIHTTPserver looze PYTHONPATH

    vincent delft, Jul 13, 2003, in forum: Python
    Replies:
    1
    Views:
    463
    vincent_delft
    Jul 13, 2003
  4. Andy Worms

    CGIHTTPServer security Breach

    Andy Worms, Jul 22, 2003, in forum: Python
    Replies:
    0
    Views:
    377
    Andy Worms
    Jul 22, 2003
  5. vincent wehren
    Replies:
    3
    Views:
    414
    vincent wehren
    Nov 27, 2003
Loading...

Share This Page