Oh I see... objects don't get __del__ or manage_beforeDelete called on
them when the ZODB is shut down, this only happens when they're
explicitly deleted.  This is the wonder of transparent persistence :-)

If you want things to happen only at Zope start and shutdown, I've had
some success using an __init__.py that does things in an otherwise blank
product in combination with the setting of a Python sys.exitfunc.  The
following __init__.py in an otherwise blank Product directory sends an
email when Zope is stopped or started:

import os, sys, popen2, socket
prefix = "StartStopNotifier:"

def stop_hook():
    mailout(user, prefix, host, "Zope dev portal stop")
    if callable(existing_exitfunc):
def start_hook():
    mailout(user, prefix, host, "Zope dev portal start")

def mailout(user, prefix, host, subject):
    cmd="/bin/mail %s -s '%s %s %s' < /dev/null" %
user = os.environ.get('STARTSTOPNOTIFY', None)
if user is not None:
    host = socket.gethostname()
    existing_exitfunc = getattr(sys, 'exitfunc', None)
    sys.exitfunc = stop_hook

> I was hoping to have this method fired Zope is shut down, restarted etc and
> not call it implicitly. The theory being if this object is cached it will
> have to be unloaded at some point?
> Ive used manage_beforeDelete() elsewhere and it works fine when Im
> destroying an object whilst ZODB is still running.
> Thanks.
Chris McDonough
Digital Creations, Publishers of Zope

Zope-Dev maillist  -  [EMAIL PROTECTED]
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope )

Reply via email to