我目前正在使用Beaker作为Flask应用程序的缓存,但是由于我使用了许多numpy / pandas类型,因此我无法确定哪些参数无法转换。理想情况下,我想修改当前的装饰器,以便可以看到其缓存的内容,或者以某种方式添加try / except。
From their Github似乎CacheManager
实现了cache
函数,该函数返回一个装饰器函数。
class CacheManager:
def cache(self, *args, **kwargs):
return _cache_decorate(args, self, kwargs, None)
def _cache_decorate(deco_args, manager, options, region):
. . .
return decorator
我想做的是为那个包装器创建一个包装器,但是我在这里与众不同:
def log_cache(self, *args, **kwargs):
logging.info(f"attempting to cache {args} && {kwargs}")
self.cache(args, kwargs)
cache = CacheManager()
cache.log_cache = log_cache
这样,我可以轻松地用新的装饰器替换代码库:
# currently
@cache.cache("function_name", expire=12345)
def function_name(...):
. . .
# ideally just change
@cache.log_cache("function_name", expire=12345)
def function_name(...):
. . .