[Zope-dev] __del__

Andy McKay andym@ActiveState.com
Mon, 18 Sep 2000 15:20:48 -0700


Wow thanks. I'll see what I can do. I can think of a whole bunch of uses for
that.

----- Original Message -----
From: "Chris McDonough" <chrism@digicool.com>
To: <andym@ActiveState.com>
Cc: <zope-dev@zope.org>
Sent: Monday, September 18, 2000 3:10 PM
Subject: Re: [Zope-dev] __del__


> 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):
>         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,prefix,host,subject)
>     popen2.popen2(cmd)
>
> user = os.environ.get('STARTSTOPNOTIFY', None)
> if user is not None:
>     host = socket.gethostname()
>     existing_exitfunc = getattr(sys, 'exitfunc', None)
>     sys.exitfunc = stop_hook
>     start_hook()
>
>
> andym@ActiveState.com wrote:
> >
> > 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
> http://www.zope.org
>