使用 cachetools 获取 `cache_info()`

getting `cache_info()` with cachetools

我正在使用 cachetools,我想获得 cache_info():

class UserData(object):
    def __init__():
        ...

    @cached(cache=TTLCache(maxsize=1024, ttl=600))
    def get_user_data(self, user_id):
        return self.redis.get_user_data(user_id)

    def get_cache_info():
        return self.get_user_data.cache_info()

我想获取缓存统计信息,如 :

>>> foo.cache_info()
CacheInfo(hits=1, misses=1, maxsize=5, currsize=1)

我知道这是一个不同的缓存(我使用的是第 3 方库),但在上面的文档中 cache_info 确实存在。有没有办法以某种方式获取 TTLCache 统计信息?

根据 code and documentation 你应该使用 ttl_cachefunc.py:

from cachetools.func import ttl_cache


class UserData(object):
    ...
    @ttl_cache(maxsize=1024, ttl=600)
    def get_user_data(self, user_id):
        return self.redis.get_user_data(user_id)

然后您应该可以调用 UserData.get_user_data.cache_info()

cached装饰器不维护任何统计信息。