跳转到主要内容

基于Dogpile锁的缓存前端。

项目描述

Dogpile由两个子系统组成,一个建立在另一个之上。

dogpile提供了“dogpile锁”的概念,这是一种控制结构,允许单个执行线程被选为某些资源的“创建者”,同时允许其他执行线程在创建过程中引用该资源的先前版本;如果没有先前版本,则这些线程将阻塞,直到对象可用。

dogpile.cache是一个缓存API,它提供了一种通用的接口来访问任何类型的缓存后端,并且还提供了API钩子,可以将这些缓存后端与dogpile的锁定机制集成。

总的来说,dogpile.cache旨在替代Beaker缓存系统,其内部由同一作者编写。Beaker中所有“有效”的思想都在dogpile.cache中以更高效、更简洁的方式重新实现,所有冗余(Beaker的内部最初于2005年编写)都被归入垃圾堆。

文档

请参阅 dogpile.cache 的完整文档,网址为 dogpile.cache 文档。下文提供了对 dogpile 包的简要概述。

特性

  • 简洁的 API,鼓励提前配置预定义的“区域”,每个区域定义一组缓存特性,包括存储后端、配置选项和默认过期时间。

  • 提供标准的 get/set/delete API 以及函数装饰器 API。

  • 密钥生成的机制可以完全自定义。函数装饰器 API 具有可插拔的“密钥生成器”,可以自定义缓存密钥与函数调用的对应方式,以及可选的“密钥处理器”功能,为每个区域提供可插拔的密钥处理(如编码、SHA-1 哈希)。

  • dogpile 锁,最初作为 Beaker 缓存系统的核心引擎开发,这里大大简化、改进并进行了更好的测试。一些与 Beaker 架构固有的关键性能问题已被解决,特别是值经常从缓存中“双获取”的问题。

  • 后端实现自己的“分布式”锁版本,其中“分布”与后端存储系统相匹配。例如,memcached 后端允许所有客户端使用 memcached 本身来协调值的创建。dbm 文件后端使用与 dbm 文件一起的锁文件。新的后端,如基于 Redis 的后端,可以提供适合存储引擎的自己的锁定机制。

  • 编写新后端或修改现有后端应该是常规操作 - 所需的只是基本的 get/set/delete 方法。一个针对后端定制的分布式锁是一个可选的附加功能,否则 dogpile 使用常规线程互斥锁。新的后端可以直接注册到 dogpile.cache 或通过 setuptools 入口点提供。

  • 包含的后端包括三个 memcached 后端(python-memcached、pylibmc、bmemcached)、一个 Redis 后端、基于 Python 的 anydbm 的后端以及一个纯字典后端。

  • 为第三方插件提供空间,包括一个为 Mako 模板提供 dogpile.cache 引擎的插件。

SQLAlchemy 项目

Dogpile 是 SQLAlchemy 项目的组成部分,遵循核心项目相同的标准和约定。

开发/错误报告/拉取请求

有关编码和参与此项目的指南,请参阅 SQLAlchemy 社区指南

行为准则

首先,SQLAlchemy 强调用户和开发者之间礼貌、周到和建设性的沟通。请参阅我们当前的 行为准则

许可证

Dogpile 在 MIT 许可证下分发。

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载您平台对应的文件。如果您不确定该选择哪个,请了解有关 安装包 的更多信息。

源代码分发

dogpile.cache-1.3.3.tar.gz (272.4 kB 查看哈希值)

上传时间 源代码

构建分发

dogpile.cache-1.3.3-py3-none-any.whl (58.7 kB 查看哈希值)

上传时间 Python 3

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面