python 具有定时的键过期的python缓存装饰器的示例。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 具有定时的键过期的python缓存装饰器的示例。相关的知识,希望对你有一定的参考价值。

import time
from functools import wraps


def cached(timeout, logged=False):
    """Decorator to cache the result of a function call.
    Cache expires after timeout seconds.
    """

    def decorator(func):
        if logged:
            print "-- Initializing cache for", func.__name__
        cache = {}

        @wraps(func)
        def decorated_function(*args, **kwargs):
            if logged:
                print "-- Called function", func.__name__
            key = repr(args) + repr(kwargs)
            result = None
            if key in cache:
                if logged:
                    print "-- Cache hit for", func.__name__, key

                (cache_hit, expiry) = cache[key]
                if time.time() - expiry < timeout:
                    result = cache_hit
                elif logged:
                    print "-- Cache expired for", func.__name__, key
            elif logged:
                print "-- Cache miss for", func.__name__, key

            # No cache hit, or expired
            if result is None:
                result = func(*args, **kwargs)
                cache[key] = (result, time.time())
            return result

        return decorated_function

    return decorator

以上是关于python 具有定时的键过期的python缓存装饰器的示例。的主要内容,如果未能解决你的问题,请参考以下文章

Redis中的过期键删除策略

python 中关于字典的键

如何使用 Azure Redis 缓存

如何实现python的mysql连接池并加入缓存过期

JS惰性删除和定时删除可过期的localStorage缓存,或sessionStorage缓存

JS惰性删除和定时删除可过期的localStorage缓存,或sessionStorage缓存