我有一个库,它将一些 REST api 映射到一些对象模型。因此使用 API 很容易。问题是每次我获得对象的某些属性时,库都会向服务器发出实际请求。从性能的角度来看,这并不好。
我想要的是添加一段时间(比如说 5 分钟)记忆属性值的功能,并且只有在数据过期时才发出实际请求。
问题是可以在不实际更改库代码的情况下做到这一点吗?例如使用装饰器或类似的东西。
我有一个库,它将一些 REST api 映射到一些对象模型。因此使用 API 很容易。问题是每次我获得对象的某些属性时,库都会向服务器发出实际请求。从性能的角度来看,这并不好。
我想要的是添加一段时间(比如说 5 分钟)记忆属性值的功能,并且只有在数据过期时才发出实际请求。
问题是可以在不实际更改库代码的情况下做到这一点吗?例如使用装饰器或类似的东西。
您想使用称为“记忆”的技术;我 10 多岁的 Google 搜索给了我另一个 SO 链接, 什么是 memoization 以及如何在 Python 中使用它?
factorial_memo = {}
def factorial(k):
if k < 2: return 1
if not k in factorial_memo:
factorial_memo[k] = k * factorial(k-1)
return factorial_memo[k]
但是,您不检查该行中的成员资格
if not k in factorial_memo:
你需要一个超时处理程序 -
if (curr - prev) < fiveMin
# access Memo
else
# start thread to get new data
高温高压