我有一个简单的实现,它使用包装程序lru_cache围绕从远程数据库获取数据的函数。我想知道结果是否可能是“过时的”(即是从缓存中还是从数据库中获取的)。我该如何解决?
代码很简单,只是:
@lru_cache(maxsize=2048)
def fetch_cached_data(query, *args, **kwargs):
return fetch_data(query, *args, **kwargs)
最佳答案
一个仅在单线程程序中有效的不良解决方案可能是监视函数的cache_info
以查看统计信息是否正在更改:
hits = f.cache_info().hits
result = f(some_arg)
if f.cache_info().hits > hits:
# this result was retrieved from cache
...
更好的解决方案可能是更多地考虑您认为过时的东西...所有值最终都来自数据库...是什么使您在过去的函数调用中查询过时的值...自上次查询以来的时间,返回的行上的版本标记等
关于python - 使用functools lru_cache,如何确定该函数是否返回了我缓存的数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55230201/