В настоящее время я использую 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(...):
. . .