[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
>