Michael Strasser wrote:
I want to create a Zope object that can keep non-serializable objects (specifically sockets) in memory between requests.
The idea is (in its simplest form):
* On first request to the object a socket is opened and stored. * On subsequent requests the same socket is used. If one of these requests is to close the socket it is closed. If the socket has been closed by the other end an error is returned.
I haven't found information about in-memory persistence of Zope objects and non-serializable objects can't be stored in ZODB. Have I missed something obvious?
It depends on whether you want the sockets to be shared between threads. If you do, put them in a module-scope dictionary keyed by _p_oid. If you don't, use a volatile attribute. Any attribute with a name that starts with "_v_" is a volatile attribute and is not stored in ZODB. Shane