def get_or_set(self, fn, *args, **kwargs):
"""
Wraps `fn` and caches the response
Cache key varys by all *args and **kwargs
"""
timeout = kwargs.pop("timeout", None)
message_type = kwargs.pop("message_type", None)
key = self.create_key(fn, args, kwargs)
obj = self.get_by_key(key, message_type=message_type)
if obj is None:
obj = fn(*args, **kwargs)
self.add_by_key(
key, obj, timeout=timeout, message_type=message_type)
return obj
评论列表
文章目录