在我们的django应用程序中,我们使用相同的输入从不同的地方多次调用另一个应用程序的API。你知道吗
一种解决方案是在请求被调用后将响应存储在请求上下文中。 但是,请求上下文不会传递到调用方法中。调用方法在控制流的深处。你知道吗
因此,我认为另一种解决方案是将响应存储在线程本地存储中。 但是,我从一个问题here中了解到,线程局部变量比请求本身持续的时间更长。我不想那样。我希望这个存储只和请求本身一样长。你知道吗
我实现了一个decorator来包装调用函数,如下所示。你知道吗
import threading
threadlocal = threading.local()
threadlocal.cache = {}
def cache(func):
def inner(*args, **kwargs):
cache_key = (args, str(kwargs))
if cache_key in threadlocal.cache:
return threadlocal.cache[cache_key]
response = func(*args, **kwargs)
threadlocal.cache[cachekey] = response
return response
return inner
除此之外还有更好的存储机制吗什么地方?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐