I keep a cache of transactions to flush (to persistent storage) on the event of a watermark or object finalization. Since __del__
is no longer guaranteed to be called on every object, is the appropriate approach to hook a similar function (or __del__
itself) into atexit.register
(during initialization)?
If I'm not mistaken, this will cause the object to which the method is bound to hang around until program termination. This isn't likely to be a problem, but maybe there's a more elegant solution?
Note: I know using __del__
is non-ideal because it can cause uncatchable exceptions, but I can't think of another way to do this short of cascading finalize()
calls all the way through my program. TIA!