[Zope-dev] ZPublisher events before streaming a response
Martin Aspeli
optilude+lists at gmail.com
Sun Mar 21 05:07:41 EDT 2010
Hi,
In some cases (e.g. large OFS.File/Image responses), Zope 2 will use
response.write() to stream the response.
We have events that fire before and after a "regular" response is
returned, but none that allow us to set headers (caching headers, in
this case) before such a streaming response is calculated. The normal
events fire too late.
We'd therefore like to add a new event in the HTTPResponse class (in
ZServer, though I think it makes sense to add to the ZPublisher base
class version as well). It'd hook in something like this:
if not self._wrote:
# new event code
site = getSite()
request = getattr(site, 'REQUEST', None)
notify(PubBeforeStreaming(request))
# continue as before...
(I couldn't find a better way to get hold of the request from a method
in the response, without adding a dependency on five.globalrequest,
which I assume is not desirable).
Any objections? We need this in Zope 2.12, though I'll obviously merge
to trunk, too.
Martin
--
Author of `Professional Plone Development`, a book for developers who
want to work with Plone. See http://martinaspeli.net/plone-book
More information about the Zope-Dev
mailing list