On Sep 5, 2009, at 11:21 AM, Jose wrote:

>
> I was watching, the error occurs in globals.py:
>
> File "/usr/home/jose/web2py/gluon/globals.py", line 204, in download
>    return self.stream(stream, chunk_size = chunk_size)
>  File "/usr/home/jose/web2py/gluon/globals.py", line 172, in stream
>    file_streamer = (request.env.mod_wsgi and \
> AttributeError: 'NoneType' object has no attribute 'env'

Try this:

         file_streamer = (request and request.env.mod_wsgi and \
                              request.env.mod_wsgi_version >= (2,4)  
and \
                              request.env.wsgi_file_wrapper) or streamer




>
>
>
> def stream(
>        self,
>        stream,
>        chunk_size = DEFAULT_CHUNK_SIZE,
>        request=None,
>        ):
>        """
>        if a controller function::
>
>            return response.stream(file, 100)
>
>        the file content will be streamed at 100 bytes at the time
>        """
>
>        if isinstance(stream, str):
>            stream_file_or_304_or_206(stream, request=request,
>                                      headers=self.headers)
>
>        # ## the following is for backward compatibility
>
>        if hasattr(stream, 'name'):
>            filename = stream.name
>        else:
>            filename = None
>        keys = [item.lower() for item in self.headers]
>        if filename and not 'content-type' in keys:
>            self.headers['Content-Type'] = contenttype(filename)
>        if filename and not 'content-length' in keys:
>            try:
>                self.headers['Content-Length'] = os.stat(filename)
> [stat.ST_SIZE]
>            except OSError:
>                pass
>        file_streamer = (request.env.mod_wsgi and \
>                             request.env.mod_wsgi_version >= (2,4) and
> \
>                             request.env.wsgi_file_wrapper) or
> streamer
>        self.body = file_streamer(stream, chunk_size)
>        return self.body
>
>
> This does work.
>
> def stream(
>        self,
>        stream,
>        chunk_size=10 ** 6,
>        request=None,
>        ):
>        """
>        if a controller function::
>
>            return response.stream(file, 100)
>
>        the file content will be streamed at 100 bytes at the time
>        """
>
>        if isinstance(stream, str):
>            stream_file_or_304_or_206(stream, request=request,
>                    chunk_size=chunk_size, headers=self.headers)
>
>        # ## the following is for backward compatibility
>
>        if hasattr(stream, 'name'):
>            filename = stream.name
>        else:
>            filename = None
>        keys = [item.lower() for item in self.headers]
>        if filename and not 'content-type' in keys:
>            self.headers['Content-Type'] = contenttype(filename)
>        if filename and not 'content-length' in keys:
>            try:
>                self.headers['Content-Length'] = os.stat(filename)
> [stat.ST_SIZE]
>            except OSError:
>                pass
>        self.body = streamer(stream, chunk_size)
>        return self.body
>
> jose
> >



--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to