[Web-SIG] Request for Comments on upcoming WSGI Changes
Mark Nottingham
mnot at mnot.net
Tue Sep 22 03:28:00 CEST 2009
+1. There is no one answer for these issues (e.g., URI->IRI conversion
can lose information), so low-level infrastructure like WSGI shouldn't
be making choices for people.
On 22/09/2009, at 5:31 AM, P.J. Eby wrote:
> At 11:23 AM 9/21/2009 -0700, Robert Brewer wrote:
>> I still don't see why the environ should have multiple versions of
>> anything. It's not as if the HTTP request gives us multiple Request-
>> URI's. There's a single processing step that has to happen
>> somewhere: decoding the bytes of the Request-URI to unicode. For
>> the vast majority of apps, it should only happen once. Twice is
>> acceptable to me for some apps. As I pointed out in the linked
>> email, doing that as soon as possible (i.e. in the WSGI origin
>> server) allows URI's to be compared as character strings more
>> easily. If you deploy a piece of middleware that transcodes (based
>> on more information than servers want to deal with), it had better
>> be nearly first in the stack so routing works reliably.
>
> The problem with this whole approach is that it's not composable.
> You can't stick in an application under a router that uses a
> different method for grokking its subtree of the URI space, unless
> it knows what's been done to the URI and can un-do it.
>
> Maybe I'm missing something here, but the only way I see to preserve
> composability here is to use latin-1 or bytes.
>
> The fundamental problem is that, like it or not, HTTP headers are
> actually byte strings. The *only* reason we ever supported unicode
> in WSGI was to handle platforms where there's no such thing as a non-
> unicode string, and there we made it explicit that it's just a way
> of manipulating *bytes*, not unicode.
>
> ISTM that very few (if any) of the proposals floating around for
> modifying WSGI are taking this concept into account. Most of them
> sound to me like people saying, "yeah, but this particular hack will
> work for *my* apps... so everybody else must be doing something
> stupid."
>
> But WSGI was built on the principle of *equally inconveniencing
> everyone*, specifically to avoid an impossible attempt at consensus
> between incompatible ways of doing things. (E.g., nine million
> request/response APIs.)
>
> So, if the only problem we're going to cause by using bytes
> everywhere is to make everyone need to change their routing code on
> Python 3, I vote +1000. ;-)
>
> _______________________________________________
> Web-SIG mailing list
> Web-SIG at python.org
> Web SIG: http://www.python.org/sigs/web-sig
> Unsubscribe: http://mail.python.org/mailman/options/web-sig/mnot%40mnot.net
--
Mark Nottingham http://www.mnot.net/
More information about the Web-SIG
mailing list