Hi everybody, in a python based product (running on a Zope 2.5.0 installation) I try to implement a class which hands out unique ids. (*) The idea is to save the last id in the server's file system. To make sure that this works even if the Zope server crashed, the object should save an 'earmark' in the file system if it is destroyed in a regular way. I tried to do this with the atexit module provided by Python, but it doesn't work. (nor does __del__). Does anybody know why this is so? Or can anybody suggest a working alternative? (One working solution provided by alex.khan (*) is to patch the source code of Zope itself. But I would like to find another solution, so that others who might want to use the product, have not to fiddle with the Zope source code.) Here are the relevant parts of the implementation: class ManageGlobalZypId: def __init__(self, bucketSize, FileName): import os, thread, string, App.FindHomes, atexit ... self.opened = 1 atexit.register(self.close) def close(self): if self.opened: # save 'earmark' self.opened = 0 ... # GlobalIdHandout is the one and only object from which other objects get # their ids GlobalIdHandout = ManageGlobalZypId(256, 'GSID.txt') Thank you. Jens (*) based on an idea by alex.khan: http://www.zope.org/Members/alex.khan/GlobalSystemId?pp=1