[Web-SIG] WSGI, cgi.FieldStorage incompatibility

Robert Brewer fumanchu at amor.org
Tue Nov 28 23:09:40 CET 2006


James Y Knight wrote:
> On Sep 29, 2006, at 3:31 PM, Guido van Rossum wrote:
> 
> > On 9/29/06, Michael Kerrin <michael.kerrin at openapp.biz> wrote:
> >>   But the current implementation of cgi.FieldStorage in the 2.4.4  
> >> branch
> >> and on Python 2.5 does call readline with the size argument. It has
> >> started to do this in response to the Python bug #1112549 -
> >> cgi.FieldStorage memory usage can spike in line-oriented ops. See
> >> http://sourceforge.net/tracker/index.php? 
> >> func=detail&aid=1112549&group_id=5470&atid=105470
> >>
> >>   Since it is reasonable for a WSGI application to use  
> >> cgi.FieldStorage
> >> I am wondering whether cgi.FieldStorage or the WSGI specification  
> >> needs
> >> to changed in order to solve this incompatibility.
> >>
> >>   Originally I thought it was cgi.FieldStorage that needs to be  
> >> changed,
> >> and hence tried to fix it by wrapping the input stream so that the
> >> readline method always uses the read method on the input stream.  
> >> While
> >> this seems to work for me it introduces a level of 
> complexity in the
> >> cgi.py file, and possible some other bugs, that makes me think that
> >> adding the size argument for readline into the WSGI specification  
> >> isn't
> >> such bad idea after all.
> >
> > Since that change to cgi.py was a security fix I would strongly
> > recommend not to remove it and to change the WSGI spec instead.
> 
> Given that this change is now part of python 2.4.4 and python 
> 2.5, it  
> seems to me it is now a defacto requirement that all WSGI server  
> implementations must support readline with a size argument in order  
> to run any interesting software, despite the spec explicitly saying  
> that you shouldn't. I suspect simply modifying the spec to 
> follow the  
> current reality would be the least bad option.
> 
> But this kind of destabilizing breakage really shouldn't be allowed  
> to happen again. Once the error was discovered, the cgi.py change  
> should have been immediately reverted until either a decision was  
> made to change the WSGI spec, or else the change fixed to not break  
> WSGI compliant servers. This limbo situation is pretty bad.

...and it's still pretty bad. What can I do to speed up this process?
Write a change proposal for the WSGI spec?


Robert Brewer
System Architect
Amor Ministries
fumanchu at amor.org


More information about the Web-SIG mailing list