在请求上缓存类方法结果

时间:2015-07-04 05:15:58

标签: caching pyramid

我有以下结构:

class Entry:
     def has_items(self, request: Request) -> bool:
         pass

什么是Pyramistic方法来缓存评估has_items()以便

  • 每次请求仅评估一次

  • 缓存键是条目实例本身(id(entry)

  • 缓存存储可以(当然?)在请求对象本身上

1 个答案:

答案 0 :(得分:1)

正如马蒂诺已经说过的那样,我也认为config.add_request_method是这样做的方法。我的代码中包含以下内容:

config.add_request_method(get_current_user_groups, 'groups', reify=True)

这样只需get_current_user_groups作为唯一参数即可调用requestreify=True告诉它将结果缓存为属性。现在,对request.groups的任何调用都会为我提供该用户的组列表。

我不确定,但我认为该方法可能是"延迟加载"因为只有在第一次调用读取属性之后才进行调用。