gpt4 book ai didi

django - 使用 cache.get_or_set() 缓存 Django 函数调用的结果

转载 作者:行者123 更新时间:2023-12-01 09:17:23 25 4
gpt4 key购买 nike

该条款工作正常:

if cache.get(cache_name):
events = cache.get(cache_name)
else:
events = self.get_google_events()
cache.set(cache_name, events, 60 * 10)

如果我在 get_google_events() 中放入打印语句,它仅在缓存过期时才打印,正如预期的那样。但是,如果我尝试将上述内容缩短为:
events = cache.get_or_set(cache_name, self.get_google_events(), 60 * 10)

每次都会触发打印语句(即缓存被静默破坏)。第二种形式不等于第一种形式吗?

最佳答案

一点都不。 Python 必须在调用函数本身之前完全评估构成函数参数一部分的表达式。在您的第二种情况下,这意味着 self.get_google_events()将始终在 get_or_set 之前被调用可以确定是否从缓存中检索该值。

另请注意,您的第一个案例可以稍微提高效率:按照您现在的方式,您要两次调用 get不必要地。相反,只需制作一个:

events = cache.get(cache_name)
if not events:
events = self.get_google_events()
cache.set(cache_name, events, 60 * 10)

关于django - 使用 cache.get_or_set() 缓存 Django 函数调用的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40772832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com