Обтекание кеша с регистрацией - PullRequest
0 голосов
/ 07 мая 2019

В настоящее время я использую Beaker в качестве кеша для своего приложения Flask, но, поскольку я использую много типов numpy / pandas, у меня возникают проблемы с определением, какие параметры не могут быть преобразованы.В идеале я хотел бы изменить текущий декоратор так, чтобы я мог либо увидеть, что он кэшировал, либо добавить попытку / кроме как-нибудь.

Из их 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(...):
    . . .
...