简单粗暴的实现Python-Cache

4,242 阅读1分钟

MedusaSorcerer的博客


在不依赖第三方产品的时候, 缓存的方式有很多, Python的依赖库也可以实现, 但我们使用原生的纯Python代码来实现呢?

PS:代码平庸功能无用

#!/usr/bin/env python
# _*_ coding: UTF-8 _*_
import time

DATA = dict(test=123)
TIMEOUT = dict(test=[1586314221.3422256, 123])


def timeout(second: (float, int)):
    def decorator(func):

        def wrapper(keyword):
            if keyword not in DATA.keys(): return f'Not found "{keyword}"'
            if (not TIMEOUT.get(keyword)) or (time.time() - float(TIMEOUT.get(keyword)[0]) >= float(second)):
                result = func(keyword)
                TIMEOUT[keyword][0] = time.time()
                print('-- 获取的是最新的数据内容 --')
                return result
            result = TIMEOUT.get(keyword)[1]
            TIMEOUT[keyword][0] = time.time()
            print('-- 获取的是缓存的数据内容 --')
            return result

        return wrapper

    return decorator


@timeout(10)
def cache(keyword):
    """ Python Cache """

    return DATA.get(keyword)