python中的高级缓存

thornfield的Python项目详细描述


thornfield:python中的高级缓存

Build StatuscodecovLicense: MITCode style: black

安装

pip install thornfield

使用

选择您要使用的缓存存储-内存中,redis和postgresql当前已实现。 您可以通过实现Cache接口来使用不同的存储。在

然后,使用cached修饰符对缓存的函数进行注释:

cacher = Cacher(cache_factory_func)

@cacher.cached
def foo():
    ...

装饰器支持:

  • 设置缓存值的过期时间。在
  • 只缓存与约束匹配的值(例如,not None)。在
  • 只使用一些函数参数作为缓存的键。在
  • 缓存异步函数。在

仅缓存某些参数

如果您不想将函数的所有参数用作缓存键, 您可以使用CachedNotCached类型:

^{pr2}$

缓存抽象方法

为了避免在 抽象方法,可以使用cache_method,如下所示:

class Base(ABC):
    def __init__(self):
        cacher.cache_method(do_something)

    @abstractmethod
    def do_something(self):
        pass

缓存工厂

cache_factories包中,可以找到Redis和PostgreSQL的缓存工厂。 它们都将每个函数缓存到不同的表(在PostgreSQL中,db在Redis中)。在

它们的create方法可以作为cache_impl传递给Cacher的构造函数。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java我可以使用Hibernate连接不同的数据库并从表中导入数据吗?没有预定义的对象类   java为什么getBoundsInLocal获取错误的坐标?   java在处理并发哈希映射时必须使用锁   java将过滤的JTable数据导出到文本文件   从命令行编译java不使用库   Java使用方法和构造函数绘制图形   java理解优先级队列中的排序方法   尝试解密文件时,java CipherInputStream为空   在Java中将字符串解析为长字符串   java我想在raspberry pi重新启动时在crontabe中执行arecord命令   弹性搜索弹性搜索Lucene公式的Java计算   java使用apachepoi和docx4j读取doc文件   swing显示JavaGUI是否需要特殊处理?   java使用字符串进行数学运算   java在SpringMVC中用JSP初始化菜单项选择表单数据的最佳方法   无多线程的java多客户端程序   swing如何在Java中对BuffereImage进行去饱和?   java在安卓中创建自定义地图