At 11:12 AM 9/12/2006 +0200, David Fraser wrote:
>Hi
>
>We've been trying to manage how we handle the middleware stack in our
>web framework. The PEP doesn't specify any standard way of doing this
>and the example is constructed with the next item in the stack as a
>parameter.
>
>Our approach is to pass a WSGIStack variable in the environment
>variables and get each layer of middleware to pop off the next layer and
>call it, thus:
>
>def run_child(self, environ, startresponse):
>     child = environ["j5_WSGIStack"].pop()
>     return child(environ, startresponse)
>
>so that the middleware can transform that in whichever way it wants...
>
>Does this fit in well with how other people are doing things? Just curious

That's an interesting concept.  I don't think anybody else has come up with 
it though.

I'll certainly steal it if I ever get around to creating a competitor to 
Paste Deploy.  :)  But I imagine I'd use a linked list of tuples instead of 
popping from a list, e.g.:

      child, environ["my.middleware.stack"] = environ["my.middleware.stack"]

This would allow the same chain to be used for every call, without copying, 
and it's probably faster than pop() as well, at least under CPython.

_______________________________________________
Web-SIG mailing list
[email protected]
Web SIG: http://www.python.org/sigs/web-sig
Unsubscribe: 
http://mail.python.org/mailman/options/web-sig/archive%40mail-archive.com

Reply via email to