[Zope-dev] Re: serving BLOBs

Paul Winkler pw_lists at slinkp.com
Tue Oct 12 03:41:30 EDT 2004


On Mon, Oct 11, 2004 at 07:09:16PM +0200, Johan Carlsson wrote:
> Tres Seaver wrote:
> >Johan Carlsson wrote:
> >
> >>What exactly is the filestream_iterator that the FileCacheManager uses?
> >>
> >>As I understand it this is a new feature?
> >
> >
> >For Zope >= 2.7.2, ZPublisher defines an interface, 
> >ZPublisher.Iterators.IStreamIterator.  An application can return an 
> >object implementing this interface to the publisher, instead of a 
> >string;  if so, the publisher hands it directly to medusa, and frees up 
> >the application thread / database connection.  medusa will use the 
> >iterator to send the response back to the user, without first converting 
> >it to a single big string.
> 
> That's actually brilliant.
> 
> If I understand ExternalFile could benefit from using the 
> IStreamIterator interface instead of RESPONSE.write?
> For instance, for someone that don't want to store blobs
> in the database temporarily :-)

It's pretty easy to do. I have quick hacky patches for
LocalFS-1.2-andreas, ExtFile (not ExternalFile), ExternalFolder, and
CMFCore.FSFile, all here:
http://www.slinkp.com/code/zopestuff/blobnotes
Also some quick stupid benchmarks there.
IIRC, Andreas incorporated such a patch into LocalFS-1.3-andreas
or some such release.


-- 

Paul Winkler
http://www.slinkp.com


More information about the Zope-Dev mailing list