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

