我和 Zope 实用程序提供了一种执行网络进程的方法。
由于结果在一段时间内有效,我正在使用plone.memoize.ram
缓存结果。
MyClass(object):
@cache(cache_key)
def do_auth(self, adapter, data):
# performing expensive network process here
...以及缓存功能:
def cache_key(method, utility, data):
return time() // 60 * 60))
但我想防止发生记忆do_auth
调用返回空结果(或引发网络错误)。
看看 plone.memoize 代码,我似乎需要raise ram.DontCache()
例外,但在执行此操作之前,我需要一种方法来调查旧的缓存值。
如何从缓存中获取缓存数据?
我把我写的几段代码放在一起......
它未经测试,但可能对您有帮助。
您可以使用 ICacheChooser 实用程序访问缓存的数据。
它的调用方法需要您缓存的函数的点名称(在您的情况本身)
key = '{0}.{1}'.format(__name__, method.__name__)
cache = getUtility(ICacheChooser)(key)
storage = cache.ramcache._getStorage()._data
cached_infos = storage.get(key)
在cached_infos 中应该有您需要的所有信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)