python 3中的一个简单缓存实用程序
simple_cache的Python项目详细描述
python 3中的一个简单的缓存实用程序。
简单缓存使用pickle模块编写任何 key : value对磁盘上的文件。
它是作为一种缓存http请求的简单方法编写的 本地使用。它可以用来缓存任何数据, 只要keys是散列的,values是 可腌制。
它还提供了一个decorator来直接缓存函数调用。
要求
只使用标准库,因此不存在依赖关系。
安装
pip install simple_cache
或者,如果您愿意,可以下载simple_cache.py文件并 在本地导入。
用法
每个缓存文件都包含一个字典,充当命名空间 为了那个缓存。在文件中,可以设置和检索任何key : value 根据需要配对。
设置密钥时,必须以秒为单位给出ttl值或生存时间。 此值确定该值被视为有效的时间量。 之后,该值将被视为已过期,并且不会返回。
调用不存在的缓存文件、不存在的密钥或过期的密钥 全部返回None。
可以在密钥过期之前或之后使用新值设置密钥。
每当您向缓存请求一个值时,如果该值恰好已过期,则 从文件中删除。您也可以随时手动询问缓存文件, 删除所有当前过期的项目。
API
import simple_cache
使用decorator格式:
使用一个decorator对多个函数使用同一个缓存文件可能 引起问题。decorator使用函数的*args, **kwargs作为键, 因此,调用具有相同参数的不同函数将导致冲突。
可以使用decorator格式指定自定义文件名(和ttl),覆盖 默认值。
请注意,decorator格式只支持具有不可变类型的args和kwargs。 如果您的参数中有一个是可变的(例如列表或字典),那么decorator将不起作用。
@simple_cache.cache_it() # uses defaults: filename = "simple.cache", ttl = 3600 def some_function(*args, **kwargs): # body return value
@simple_cache.cache_it(filename="some_function.cache", ttl=120) def some_function(*args, **kwargs): # body return value
使用模块函数:
设置键和值:
simple_cache.save_key(filename, key, value, ttl)
检索值:
simple_cache.load_key(filename, key)
删除文件中的所有过期项:
simple_cache.prune_cache(filename)
从文件加载整个缓存字典(可能 用于调试或自省:
simple_cache.read_cache(filename)
将整个字典写入文件,覆盖任何 文件中以前的数据(可能用于初始化 通过批量写入多个项目进行缓存:
simple_cache.write_cache(filename, cache)
filename是包含有效文件名的字符串
key是任何哈希类型,并且在 每个缓存文件(否则将覆盖)
value是由pickle模块支持的任何python类型
ttl是一个整数或浮点数,表示秒数 项目将在到期前保持有效
cache是一个包含key:value对的字典
许可证
simple_cache在gplv3下是开源的。