[Zope] Re: [Zope-dev] post-publishing hook

Shane Hathaway shane@zope.com
Fri, 29 Nov 2002 15:49:02 -0500


On 11/29/2002 01:33 PM, Ivo van der Wijk wrote:

> On Fri, Nov 29, 2002 at 01:07:24PM +0100, Carlo Giomini wrote:
>
> >Dear all,
> >I need a sort of post-publishing hook (so to say). I need Zope to call a
> >function of mine as the very last action of publishing a request, 
> i.e. after
> >having built the response (and sent it to the browser possibly), but
> >before starting publishing a new request. My Zope server is running as a
> >single-threaded app.
> >Does Zope support this any way?
> >
>
>
> There is a way, but I find it somewhat ugly/hackish. But Shane uses it
> in CookieCrumbler, so it must be good ;)

"Reliable" and "good" are not necessarily the same thing. :-)  Since the 
only way ZODB connections ever get closed in a standard Zope setup is 
through the request.hold() mechanism, you can be sure that if Zope is 
working at all, the side effects of request.hold() are working.  Relying 
on side effects can be dangerous, though.

> You'll be working outside the REQUEST transaction at that moment, so 
> please
> keep that in mind when modifying objects.

In fact, the database connection might already be closed.  If you need 
to read or write the ZODB, you might have to open a private connection 
and close it before returning.  Ugh.

Shane