使用 plone.memoize.ram 使 memoize 无效/阻止

2024-03-27

我和 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(使用前将#替换为@)

使用 plone.memoize.ram 使 memoize 无效/阻止 的相关文章

  • Python中递归子集和

    我很乐意得到一些帮助 我有以下问题 我得到了一个数字列表seq和一个目标数字 我需要写两件事 返回的递归解决方案True如果存在等于目标数的子序列之和并且False否则 例子 subset sum 1 1 5 4 0 True subset
  • 不同签名功能的容器

    我正在尝试用 C 编写一个框架 用户可以在其程序中指示他想要应用的一组函数记忆化战略 假设我们的程序中有 5 个函数f1 f5我们希望避免对函数进行 昂贵的 重新计算f1 and f3如果我们已经使用相同的输入调用它们 请注意 每个函数可以
  • 在Python中缓存类属性

    我正在用 python 编写一个类 并且有一个属性需要相对较长的时间来计算 所以我只想做一次 此外 并不是该类的每个实例都需要它 所以我不想默认这样做 in init 我是 Python 新手 但不是编程新手 我可以很容易地想出一种方法来做
  • 哈斯克尔:记忆化

    在离开多年并忘记一切之后 我正在尝试重新学习 Haskell 但我发现自己仍然感到困惑记忆化 特别是 我正在尝试编写一个程序来生成混乱的数量D n of n对象 原始位置没有任何项目的排列 号码D n 可以递归地定义为D 1 0 D 2 1
  • Matlab中预计算函数的缓存结果

    我有两个数组 x and y x是函数的输入 y是函数值 例如 x 1 2 3 4 5 6 7 8 9 10 y 3 6 2 4 1 6 7 0 1 8 两者的长度相同 假设我有另一个数组z含有 2 3 8 9 10 3 长度不等于x an
  • Python 中的持久记忆

    我有一个昂贵的函数 它接受并返回少量数据 一些整数和浮点数 我已经memoized http en wikipedia org wiki Memoization这个功能 但我想让备忘录持久化 已经有几个与此相关的线程 但我不确定某些建议方法
  • React.memo 如何与 useCallback 配合使用

    据我了解 React memo 是一个记忆组件的 API 如果它的 props 没有改变 React 使用该组件的最新渲染 而不将其与之前的版本进行比较 跳过新渲染并与旧渲染进行比较可以加快应用程序的速度 凉爽的 现在 这是我不明白的 如果
  • 记住一个函数,以便当我在 Python 中重新运行该文件时它不会被重置

    我经常在 Python 中进行交互式工作 其中涉及一些我不想经常重复的昂贵操作 我通常运行我经常处理的任何 Python 文件 如果我写 import functools32 functools32 lru cache def square
  • 记忆化Python函数

    这是一小段代码 它将每个函数转换为其记忆版本 def memoize f Memoize a given function f def memf x if x not in memf cache memf cache x f x retur
  • 缓存和记忆化有什么区别?

    我想知道之间的实际区别是什么caching and memoization is 在我看来 两者都涉及避免通过存储数据来重复调用函数来获取数据 两者的核心区别是什么 记忆化是一种特定形式的缓存 涉及根据函数的参数缓存函数的返回值 缓存是一个
  • java中的递归方法记忆化

    我正在做家庭作业 我已经筋疲力尽了 我是编程新手 这是我的第一堂编程课 这就是问题 考虑 Collat z java 中的以下递归函数 它与数论中一个著名的未解决问题 称为 Collat z 问题或 3n 1 问题 相关 public st
  • 有没有办法为 Class::DBI 提供缓存机制?

    我有一组相当复杂的 ORM 模块 它们继承自类别 DBI http search cpan org dist Class DBI 由于数据变化很少 我正在考虑在此之上使用缓存 记忆层来加快速度 我找到了一个模块 类 DBI 可缓存 http
  • Plone - 在页面中何处存储图像和文件附件的最佳实践?

    我们正在使用 Plone 4 1 3 构建一个 Intranet 网站 并想知道是否有 Plone 最佳实践来存储附加到页面的文件和图像 我们的内联网更像是一个协作站点 用户可以在其中发布新闻项目和其他文章 因此 用户将插入图像 使用 Ti
  • 在 Haskell 中实现记忆功能

    我对 Haskell 相当陌生 我正在尝试实现一个基本的记忆功能 它使用Data Map存储计算值 我的示例是欧拉项目问题 15 其中涉及计算 20x20 网格中从一个角到另一个角的可能路径数 这是我到目前为止所拥有的 我还没有尝试编译 因
  • 新主题产品给出“ValueError:主题 my.theme 不可用”

    我使用这些说明通过 zopeskel 创建了一个新主题http docs plone org adapt and extend theming theme product with diazo html http docs plone or
  • 在 Javascript 中缓存和预取过期的 Promise

    Promise 是我在 Javascript 中管理异步代码的首选方式 Memoize npm 上的 memoizee 是一个 Javascript 库 用于轻松缓存和预取函数结果 理想情况下 我想结合两者的优点 并且能够使 Promise
  • Plone 内网工作流程和组权限

    现在 当然 这可能是由于对 Plone 中的角色 权限模型的误解 因为它与我过去使用过的许多系统略有不同 但这就是情况和我陷入困境的地方 客户需要一个仅对登录用户开放的 Plone 站点 4 3 3 并且可以选择使所选内容对未登录用户可见
  • 缓存施瓦茨变换

    我正在学习 中级 Perl 它非常酷 我刚刚读完 施瓦茨变换 部分 在理解它之后 我开始想知道为什么变换不使用缓存 在具有多个重复值的列表中 转换会重新计算每个值的值 因此我想为什么不使用哈希来缓存结果 这是一些代码 a place to
  • 如何将只缓存某些内容的字段添加到ADT?

    我经常需要向 ADT 添加字段 仅记住一些冗余信息 但我还没有完全弄清楚如何又好又高效地做到这一点 说明问题的最好方法是举个例子 假设我们正在使用无类型 lambda 项 type VSym String data Lambda Var V
  • 酸洗过程是确定性的吗?

    对于特定的输入值 Pickle 是否总是产生相同的输出 我想当腌制具有相同内容但不同插入 删除历史记录的字典时可能会出现问题 我的目标是使用 Pickle 和 SHA1 创建函数参数的 签名 以实现 memoize 我想当腌制具有相同内容但

随机推荐