[ZODB-Dev] Invalidations

Jim Fulton jim at zope.com
Thu Apr 28 07:47:41 EDT 2005


Rajeev J Sebastian wrote:
...
> What I also need, is a way to know which objects have changed, 
> without having to maintain copies: the reason is to show those 
> changes to the user in my (long-running) PyQt window.

As I mentioned before, ZODB doesn't provide a mechanism for
this. I would like it to for just your sort of application.

Working out the right mechanism (if there is "a" right mechanism)
would take some exerimenttation.  Here are some ideas to try:

- For objects that want to know when they have changed, override
   _p_invalidate.  This is called when an object has been
   modified in another thread (or process).  Your version of
   _p_invalidate could update your application. Note however that
   it would need to make sure that the object's existing state was
   tossed, for example by calling Persistent._p_invalidate.

- If you can use zope.event (from Zope 3), modify
   ZODB.DB.DB.invalidate to generate an event when objects are
   invalidated and modify your application to subscribe to
   the events.

If you decode to these experiments, let us know how they
turn out.

Jim

-- 
Jim Fulton           mailto:jim at zope.com       Python Powered!
CTO                  (540) 361-1714            http://www.python.org
Zope Corporation     http://www.zope.com       http://www.zope.org


More information about the ZODB-Dev mailing list