<br><br><div class="gmail_quote">On Tue, Feb 21, 2012 at 10:31 AM, Graham Dumpleton <span dir="ltr">&lt;<a href="mailto:graham.dumpleton@gmail.com">graham.dumpleton@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div></div><div class="h5">On 21 February 2012 20:26, Simon Sapin &lt;<a href="mailto:simon.sapin@exyr.org">simon.sapin@exyr.org</a>&gt; wrote:<br>
&gt; Le 21/02/2012 09:23, Tarek Ziadé a écrit :<br>
&gt;<br>
&gt;&gt;    Instead of having to provide two or three objects separately to a<br>
&gt;&gt;    server, how about making the callbacks attributes of the application<br>
&gt;&gt;    callable?<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; can you show us an example ?<br>
&gt;<br>
&gt;<br>
&gt; Proposal:<br>
&gt;<br>
&gt; Function-based:<br>
&gt;<br>
&gt;    def startup():<br>
&gt;        return open_resource(something)<br>
&gt;<br>
&gt;    def shutdown(resource):<br>
&gt;        resource.close()<br>
&gt;<br>
&gt;    def application(environ, start_response):<br>
&gt;        # ...<br>
&gt;        return response_body<br>
&gt;<br>
&gt;    application.startup = startup<br>
&gt;    application.shutdown = shutdown<br>
&gt;<br>
&gt; Class-based:<br>
&gt;<br>
&gt;    class App(object):<br>
&gt;        def startup(self):<br>
&gt;            return open_resource(something)<br>
&gt;<br>
&gt;        def shutdown(self, resource):<br>
&gt;            resource.close()<br>
&gt;<br>
&gt;        def __call__(self, environ, start_response):<br>
&gt;            # ...<br>
&gt;            return response_body<br>
&gt;<br>
&gt;    application = App()<br>
&gt;<br>
&gt; The return value of startup() can be any python object and is opaque to the<br>
&gt; server. It is passed as-is to shutdown()<br>
&gt;<br>
&gt; startup() could take more parameters. Maybe the application (though can we<br>
&gt; already have it as self for class-based or in a closure for function-based)<br>
<br>
</div></div>You do realise you are just reinventing context managers?<br>
<br>
With this &#39;application&#39; do requests.<br>
<br>
But then it was sort of suggested that was a bit too radical idea when<br>
I have mentioned viewing it that way before. :-(<br><font color="#888888"><br></font></blockquote><div><br></div><div>One might wonder if having access to process management should be part of WSGI in the first place.</div>
<div> </div></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>