Looks great to me. Can you perhaps also make change the book something
like this?

From:

>> response.stream(file, chunk_size): when a controller returns it, web2py 
>> streams the file content back to the client in blocks of size chunk_size.

To:

>> response.stream(file, chunk_size, request=request): when a controller 
>> returns it, web2py streams the file content back to the client in blocks of 
>> size chunk_size. request parameter is required to use the chunk start in the 
>> HTTP header.

Thank again for a fantastic product. We are currently retooling our
entire server to use web2py.

Clayton

On Nov 18, 7:33 pm, mdipierro <[email protected]> wrote:
> You are right. I was being stupid. I looked at it in a hurry and
> indeed this is wrong. I think I fixed it in trunk. Please check it is
> fixed all-right.
>
> massimo
>
> On Nov 18, 4:06 pm, Clayton <[email protected]> wrote:
>
>
>
>
>
>
>
> > Ok, thanks for that. However, when I call response.stream(myfilename,
> > request=request), it seems to stream it in 64K chunks, and tracing the
> > code confirms it as far as I can see.
>
> > I'm confused because despite passing in chunk_size as a parameter, it
> > had no effect on the streaming. Also I'm not understanding the
> > documentation then:
>
> > >> response.stream(file, chunk_size): when a controller returns it, web2py 
> > >> streams the file content back to the client in blocks of size chunk_size.
>
> > Does that mean that if file is a filename, then chunk_size is ignored?
> > Why wouldn't it be passed in to the stream_file_or_304_or_206 call?
>
> > Finally, the documentation doesn't seem entirely clear that if
> > "request" is not passed in as a parameter, it won't stream correctly
> > (or at least that's my experience... it always restarted from the
> > beginning ignoring the http header range).
>
> > Thanks,
>
> > Clayton
>
> > On Nov 18, 4:41 pm, mdipierro <[email protected]> wrote:
>
> > > Not a bug.
>
> > > chunk_size applies when you are returning a file-like object that
> > > needs to be streamed. If you return a string, it is not streamed.
>
> > > Massimo
>
> > > On Nov 18, 3:04 pm, Clayton <[email protected]> wrote:
>
> > > > The chunk_size seems to be ignored in response.stream
>
> > > >     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, unicode)):
> > > >             stream_file_or_304_or_206(stream, request=request,
> > > >                                       headers=self.headers) <<<< NOT
> > > > PASSED IN TO stream_file_or_304_206!!
>
> > > > Thanks,
>
> > > > Clayton

Reply via email to