Massimo, I know you sent me an email on this but I can't find it so I'll
just reply to the list.

Rocket is dying in this case because the object it has received from
web2py is not a valid WSGI response. A valid WSGI response must be
either a list or generator (Rocket is a little more tolerant and will
accept a string as well). But in this case it seems to be getting some
form of a cgi.FieldStorage type as evidenced by the traceback going into
the cgi module when Rocket tries to read the length of the returned object.

Massimo, I've seen the web2py code that it normally scrubs returned
objects. This was a while ago and may have changed since then.

Rocket could die a little more gracefully, but I'd rather keep the code
lean rather than checking every response for validity. As a test, there
is a WSGI validator in the wsgiref module that works as middleware. You
might hook that up to see what is really coming back.

-tim

On 4/26/2010 1:53 AM, hywang wrote:
> i has no view .
> when i test newest version in google hg server, web2py works well,
> but if I add IS_IMAGE() validator, some error occured again.
>
> ver1.6x works well
>
> On 4月26日, 下午2时01分, mdipierro <mdipie...@cs.depaul.edu> wrote:
>   
>> Do you have a view with a custom form?
>>
>> On Apr 25, 10:53 pm, hywang <why00...@163.com> wrote:
>>
>>     
>>> I run web2py from source on centos 5.3.
>>> When upload a file, an error occurs.
>>> -----db.py-----------
>>> db.define_table('easy_test',
>>>     Field('picture', 'upload')
>>> )
>>>       
>>     
>>> ---------controller file---------------
>>> def hello():
>>>     form = SQLFORM(db.easy_test)
>>>     if form.accepts(request.vars, session):
>>>         request.flash = 'ok'
>>>     return dict(form=form)
>>>       
>>     
>>> when submit the form, it returns 'server error'
>>> consel error msg :
>>> ERROR:Rocket.Errors.Thread-3:Traceback (most recent call last):
>>>   File "E:\web2py\gluon\rocket.py", line 747, in run
>>>     self.run_app(conn)
>>>   File "E:\web2py\gluon\rocket.py", line 1162, in run_app
>>>     sections = len(output)
>>>   File "C:\Python25\lib\cgi.py", line 633, in __len__
>>>     return len(self.keys())
>>>   File "C:\Python25\lib\cgi.py", line 609, in keys
>>>     raise TypeError, "not indexable"
>>> TypeError: not indexable
>>>       
>>     
>>> --
>>> Subscription settings:http://groups.google.com/group/web2py/subscribe?hl=en
>>>       

Reply via email to