用日志记录烧杯缓存

时间:2019-05-07 19:20:13

标签: python caching beaker

我目前正在使用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(...):
    . . .

0 个答案:

没有答案