[Checkins] SVN: lovely.memcached/trunk/src/lovely/memcached/
convenient function to invalidate caches depending on an instance.
Jürgen Kartnaller
juergen at kartnaller.at
Wed May 9 09:01:32 EDT 2007
Log message for revision 75650:
convenient function to invalidate caches depending on an instance.
Changed:
U lovely.memcached/trunk/src/lovely/memcached/README.txt
U lovely.memcached/trunk/src/lovely/memcached/__init__.py
U lovely.memcached/trunk/src/lovely/memcached/event.py
U lovely.memcached/trunk/src/lovely/memcached/tests.py
-=-
Modified: lovely.memcached/trunk/src/lovely/memcached/README.txt
===================================================================
--- lovely.memcached/trunk/src/lovely/memcached/README.txt 2007-05-09 11:39:33 UTC (rev 75649)
+++ lovely.memcached/trunk/src/lovely/memcached/README.txt 2007-05-09 13:01:32 UTC (rev 75650)
@@ -260,6 +260,7 @@
Events can be used to create invalidations. The event handler invalidates in
registered memcached utilities.
+ >>> from zope import event
>>> from zope import component
>>> from lovely.memcached.interfaces import IMemcachedClient
>>> cacheUtil1 = MemcachedClient()
@@ -270,11 +271,11 @@
>>> cacheUtil1.query('key1')
'Value1'
+ >>> from lovely.memcached.event import invalidateCache
+ >>> component.provideHandler(invalidateCache)
+
>>> from lovely.memcached.event import InvalidateCacheEvent
- >>> ev = InvalidateCacheEvent(dependencies=['dep1'])
-
- >>> from lovely.memcached.event import invalidateCache
- >>> invalidateCache(ev)
+ >>> event.notify(InvalidateCacheEvent(dependencies=['dep1']))
>>> cacheUtil1.query('key1') is None
True
@@ -285,7 +286,7 @@
>>> component.provideUtility(cacheUtil2, IMemcachedClient, name='cacheUtil2')
>>> key = cacheUtil1.set('Value1', 'key1', dependencies=['dep1'])
>>> key = cacheUtil2.set('Value2', 'key2', dependencies=['dep1'])
- >>> invalidateCache(InvalidateCacheEvent(dependencies=['dep1']))
+ >>> event.notify(InvalidateCacheEvent(dependencies=['dep1']))
>>> cacheUtil1.query('key1') is None
True
>>> cacheUtil2.query('key2') is None
@@ -295,10 +296,27 @@
>>> key = cacheUtil1.set('Value1', 'key1', dependencies=['dep1'])
>>> key = cacheUtil2.set('Value2', 'key2', dependencies=['dep1'])
- >>> invalidateCache(InvalidateCacheEvent(cacheName='cacheUtil1',
- ... dependencies=['dep1']))
+ >>> event.notify(InvalidateCacheEvent(cacheName='cacheUtil1',
+ ... dependencies=['dep1']))
>>> cacheUtil1.query('key1') is None
True
>>> cacheUtil2.query('key2') is None
False
+There is also a convenient function to invalidate caches depending on an
+instance.
+
+ >>> from zope.app.intid.interfaces import IIntIds
+ >>> intids = component.getUtility(IIntIds)
+ >>> from lovely.memcached.event import invalidateObjectCache
+ >>> class Content(object):
+ ... pass
+ >>> obj = Content()
+ >>> id = intids.register(obj)
+ >>> key = cacheUtil2.set('Value3', 'key3', dependencies=[id])
+ >>> cacheUtil2.query('key3')
+ 'Value3'
+ >>> invalidateObjectCache(obj)
+ >>> cacheUtil2.query('key3') is None
+ True
+
Modified: lovely.memcached/trunk/src/lovely/memcached/__init__.py
===================================================================
--- lovely.memcached/trunk/src/lovely/memcached/__init__.py 2007-05-09 11:39:33 UTC (rev 75649)
+++ lovely.memcached/trunk/src/lovely/memcached/__init__.py 2007-05-09 13:01:32 UTC (rev 75650)
@@ -0,0 +1 @@
+# package
Modified: lovely.memcached/trunk/src/lovely/memcached/event.py
===================================================================
--- lovely.memcached/trunk/src/lovely/memcached/event.py 2007-05-09 11:39:33 UTC (rev 75649)
+++ lovely.memcached/trunk/src/lovely/memcached/event.py 2007-05-09 13:01:32 UTC (rev 75650)
@@ -18,10 +18,19 @@
from zope import interface
from zope import component
+from zope import event
+from zope.app.intid.interfaces import IIntIds
+
from interfaces import IInvalidateCacheEvent, IMemcachedClient
+def invalidateObjectCache(obj):
+ """Invalidate caches based on the intid of an object"""
+ intids = component.getUtility(IIntIds)
+ event.notify(InvalidateCacheEvent(dependencies = [intids.getId(obj)]))
+
+
class InvalidateCacheEvent(object):
interface.implements(IInvalidateCacheEvent)
Modified: lovely.memcached/trunk/src/lovely/memcached/tests.py
===================================================================
--- lovely.memcached/trunk/src/lovely/memcached/tests.py 2007-05-09 11:39:33 UTC (rev 75649)
+++ lovely.memcached/trunk/src/lovely/memcached/tests.py 2007-05-09 13:01:32 UTC (rev 75650)
@@ -17,9 +17,27 @@
__docformat__ = "reStructuredText"
import unittest
+from zope import component
from zope.testing import doctest
from zope.testing.doctestunit import DocTestSuite, DocFileSuite
+from zope.app.keyreference import testing
+from zope.app.intid.interfaces import IIntIds
+from zope.app.intid import IntIds
+
+from zope.app.testing import setup
+
+
+def setUp(test):
+ test.globs['root'] = setup.placefulSetUp(site=True)
+ component.provideUtility(IntIds(), IIntIds)
+ component.provideAdapter(testing.SimpleKeyReference)
+
+
+def tearDown(test):
+ setup.placefulTearDown()
+
+
def test_suite():
level1Suites = (
DocFileSuite(
@@ -34,6 +52,7 @@
level2Suites = (
DocFileSuite(
'README.txt',
+ setUp=setUp, tearDown=tearDown,
optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS,
),
)
More information about the Checkins
mailing list