[Web-SIG] a possible error in the WSGI spec
manlio_perillo at libero.it
Mon Dec 24 12:28:29 CET 2007
Phillip J. Eby ha scritto:
>> There is also a little problem in the "The start_response() Callable"
>> chapter, in this phrase:
>> """The start_response callable must not actually transmit the response
>> headers. Instead, it must store them for the server or gateway to
>> transmit only after the first iteration of the application return value
>> that yields a non-empty string, or upon the application's first
>> invocation of the write() callable"""
>> From this it seems that the response headers should be transmitted
>> after the first invocation of the write() callable, even if it returns
>> an empty string, but this is in contradiction with the following phrase:
>> """In other words, response headers must not be sent until there is
>> actual body data available, or until the application's returned iterable
>> is exhausted"""
> There is no sane reason to call write() with an empty string, so I don't
> really see a conflict here.
Yes, there are no sane reasons, but it is still not explicitly forbidden.
> Please note that both write() and iteration in the normal case should be
> sending the entire response body in a single call or yield. Multiple
> yields or write() calls should ONLY be used when streaming output is
> *required*: i.e. server push or sending large files.
> (In addition, write() is intended strictly for legacy apps and
> frameworks only; new code should use iteration only, especially as WSGI
> 2 will drop the start_response() and write() functions altogether.)
By the way: isn't it better to first release a WSGI 1.1 before jumping
to a (incompatible) WSGI 2.0?
More information about the Web-SIG