<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote"><div><br>Yes, I also think shutting down the server is completely orthogonal to requests. <br>
<br></div></div></blockquote><div><br></div><div><br></div><div>CherryPy is using an approach where, indeed, both are orthogonal. Tools [1], which are similar to middlewares, are dealing with requests whereas the CherryPy engine [2] is the basis upon which the whole application and HTTP servers are running. The engine provides, amongst others, a clean way to stop and/or exit the whole stack independently from running requests. However, due to the way Robert Brewer designed it, it also means this can, if wanted, be performed from a request handler at any time. Note that the engine architecture, a bus, allows obviously for functions to subscribe at the time the engine shuts down in order to perform further operations that you would require.</div>
<div><br></div><div>Robert has also started the work of extracting the engine from CherryPy itself for other frameworks to rely on [3].</div></div><div><br></div>-- <br>- Sylvain<br><a href="http://www.defuze.org">http://www.defuze.org</a><br>
<a href="http://twitter.com/lawouach">http://twitter.com/lawouach</a><br>
<div><br></div><div>[1] <a href="http://docs.cherrypy.org/stable/concepts/tools.html">http://docs.cherrypy.org/stable/concepts/tools.html</a></div><div>[2] <a href="http://docs.cherrypy.org/stable/concepts/engine.html">http://docs.cherrypy.org/stable/concepts/engine.html</a></div>
<div>[3] <a href="https://bitbucket.org/cherrypy/magicbus">https://bitbucket.org/cherrypy/magicbus</a></div>