Stopping a *HTTPServer
Sloth
mt_horeb at yahoo.com
Sat May 26 08:36:43 EDT 2001
"Alex Martelli" <aleaxit at yahoo.com> wrote in message news:<9enrvq01vtr at enews2.newsguy.com>...
> "SteveR" <steve at grandfathersaxe.demon.co.uk> wrote in message
> news:7t61iTARL1D7IwgW at grandfathersaxe.demon.co.uk...
> > David LeBlanc <whisper at oz.nospamnet> wrote:
> > >In article <67abb823.0105250734.24705e9d at posting.google.com>,
> > >mt_horeb at yahoo.com says...
> > >> Here's the situation - I'm building a quick-and-dirty application that
> > >> serves CGI and HTML via the CGIHTTPServer module. So far, so good.
> > >> The only issue that I am having is that I cannot figure out how to
> > >> stop the server once I've started it with serve_forever().
> ...
> > I would like to be able to stop one of these servers, *under program
> > control*. My application has a "hidden" admin page which allows the
> > server to be stopped. At the moment, I'm using os._exit, but this is
> > just as inelegant as Ctrl-C/Ctrl-Break.
> >
> > Is there a tidier way than os._exit?
>
> What about subclassing and overriding serve_forever()? Right now
> it does:
>
> def serve_forever(self):
> """Handle one request at a time until doomsday."""
> while 1:
> self.handle_request()
>
> and it's clearly no rocket science to override this with, e.g.:
>
> def serve_forever(self):
> """Handle one request at a time until doomsday... almost."""
> self.proceed = 1
> while self.proceed:
> self.handle_request()
>
> now, from within your handle_request method, or methods called
> from it, you can set the .proceed attribute to 0 and when handle_request
> finishes the server will shut down. Can be made subtler of course
> (keep serving as long as requests are already queued-up in some
> way, etc), but this might do, and it seems crystal-simple.
>
>
> Alex
Alex:
Thank you for the suggestion - I hadn't thought of that! The
newsgroup saves yet one more aspiring Python developer...
Thanks again!
Sloth
More information about the Python-list
mailing list