代码之家  ›  专栏  ›  技术社区  ›  scanny

RESTPlus资源类的生存期是多少?

  •  0
  • scanny  · 技术社区  · 3 年前

    基本上我需要知道我是否可以使用 @functools.cached_property 在烧瓶里 Resource 子类来缓存一个昂贵的操作或协作器构造,这些操作或构造不应超出单个请求。

    我认为有两种可能性:

    1. A. 资源 为每个路由到该资源的HTTP请求创建新的子类实例。
    2. A. 资源 当API被构造并在API的生命周期内为每个路由到该资源的请求重用时,子类实例被创建一次。

    对象/实例上的缓存仅在案例1中有效。 @cached_property 实际上是一个懒散地计算的实例变量,其值在第一次使用时计算并存储在实例变量中,然后在每次连续访问/调用时从该变量提供服务。我认为机制实际上是一个描述符,但概念是一样的。

    在任何情况下,我需要为每个请求使用不同的值,我只需要在处理单个请求的过程中多次使用它,并且我需要为该请求计算一次值。

    @缓存的不动产 按照我需要的方式在瓶子上工作 资源 亚类?

    0 回复  |  直到 3 年前
        1
  •  1
  •   tman    3 年前

    一个例子 Resource 为每个请求创建一个类。您可以通过在其 __init__() 方法

    此外,考虑使用 Flask.g 命名空间对象。它具有请求上下文的生存期,通常用于存储数据库连接等,每个请求需要创建一次数据库连接,并在请求结束后销毁。