使用 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 无效/阻止 的相关文章

  • 记忆处理程序[重复]

    这个问题在这里已经有答案了 创建一个像下面这样可以为您处理记忆过程的类是 好习惯 吗 记忆化的好处是如此之大 在某些情况下 比如这个 它从我的计算机上的 501003 次函数调用减少到 1507 次函数调用 并将 CPU 时间从 1 409
  • 在 Plone 构建设置中查找需求规格

    我有一个 Plone 网站 大约 4 2 4 从version txt在根目录中 我想更新到最新版本 我发现这个操作方法 截至目前 4 3 4 我继承了过多的固定版本 这些版本没有记录并且可能已经过时 当评论我的versions cfg u
  • R 中的阶乘记忆化

    我编写这个函数来查找数字的阶乘 fact lt function n if n lt 0 cat Sorry factorial does not exist for negative numbers n else if n 0 cat T
  • plone 中的文件是否存在与修订版本一样多的副本?

    在 plone 中 如果文件 或任何内容 被修改 例如 4 次 则存在多少个物理副本 我正在使用 plone 4 1 其中文件和图像存储在文件系统上 内容对象由多个持久记录组成 对于文件系统上包含二进制 blob 文件的图像和文件 当内容对
  • 不同签名功能的容器

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

    我有一个名为myfolder 里面有一些项目 例如 item1 item2 item3 等等 当我添加 portlet 时Navigation到页面左栏 并输入到文件夹中myfolder 它向我展示了 portlet 上的链接 如下所示 i
  • 导航 portlet:所有子级始终展开

    如何使导航 portlet 即使对于未选定的文件夹也显示子文件夹 我的意思是初始树状态已完全展开 至少对于一个级别 即 直接子级 我正在查看 INavtreeStrategy SitemapNavtreeStrategy 和 INaviga
  • 我可以记住通用方法吗?

    我有 2 个昂贵的通用方法 public T DoStuff
  • 当我关闭 Zope 服务器时,它显示 AttributeError

    我正在使用 Plone 4 3 3 创建我的 Plone 站点 但是当我关闭服务器时 它显示以下错误 Traceback most recent call last File Plone zinstance parts instance b
  • V8 中 JSON.stringify() 是确定性的吗?

    我还没见过 还没 JSON stringifyNode JS 中的不确定性 不能保证它在规范级别上具有确定性 但是V8呢 它的实现是确定性的吗 是否能保证它在未来的 V8 版本中保持确定性 Edit 对于确定性 我的意思是无论以下断言的值是
  • 使用 Collective.dexteritytextindexer 扩展 SearchableText

    我正在尝试扩展我的内容类型的 SearchableText 索引 我通过在模型文件中将多个字段标记为 indexer searchable true 成功地包含了多个字段 但是我无法从我的类型的 py 扩展 SearchableText 如
  • Plone/Zope 的外部方法

    我有两个 Plone 实例在服务器上运行 它们的位置是 usr local Plone Inst1 和 usr local Plone Inst2 我正在尝试设置外部方法 但很难确定我的 扩展 文件夹应该放置在哪里 似乎无论我把它放在哪里
  • C++ 中的记忆函子包装器

    这是我为函数编写的通用记忆包装器 它利用元组哈希 https stackoverflow com questions 7110301 generic hash for tuples in unordered map unordered se
  • ActiveSupport::Memoizes 指的是哪种 Ruby memoize 模式?

    因此在 Rails 3 2 中 ActiveSupport Memoizes 已被弃用 消息内容如下 DEPRECATION WARNING ActiveSupport Memoizable is deprecated and will b
  • 阻止用户将BMP、TIFF等图像上传到Plone中的ImageField

    用户这样做是因为他们可以 但是 图像自动调整大小等功能会出现故障 这让我成为一个悲伤的男孩 如何限制全站图像上传为 GIF PNG 和 JPEG 对于原型 为了灵巧 使用原型 您可以覆盖图像内容类或使用以下架构创建您自己的自定义图像内容类
  • 如何使用动态规划确定最长递增子序列?

    我有一组整数 我想找到最长递增子序列 https en wikipedia org wiki Longest increasing subsequence该集合使用动态规划 好的 我将首先描述最简单的解决方案 即 O N 2 其中 N 是集
  • 灵活地移动现有领域/行为[重复]

    这个问题在这里已经有答案了 如何将现有字段 IDublinCore rights 移动到特定字段之后的另一个字段集中 无需编写我自己的行为 IDublinCore 的副本 Rights 字段应出现在 image caption 自己的内容类
  • 为什么这个记忆器适用于递归函数?

    我不明白为什么下面的代码是这样的fib以线性而非指数时间运行 def memoize obj Memoization decorator from PythonDecoratorLibrary Ignores kwargs cache ob
  • 如何仅为自定义类型覆盖模板“folder_full_view_item.pt”?

    这个问题的演变方式令人困惑 不过 它的某些部分 特别是一些答案 可能对某人有用 因此 我将不修改这个问题 并尝试重新表述这个问题here https stackoverflow com q 23809810 1659599 覆盖模板fold
  • 在 C# 中实现记忆化 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我知道这个话题 记忆 已经被讨论了很多 比如here https stackoverflow com questions 285216

随机推荐