一种'dogpile'锁,通常用作更大缓存解决方案的组件
项目描述
一种“dogpile”锁,允许单个线程在生成昂贵资源的同时,其他线程使用“旧”值,直到“新”值准备就绪。
Dogpile基本上是从Beaker包中提取的锁定代码,用于简单和通用用途。
用法
一个简单的示例
from dogpile.core import Dogpile # store a reference to a "resource", some # object that is expensive to create. the_resource = [None] def some_creation_function(): # create the resource here the_resource[0] = create_some_resource() def use_the_resource(): # some function that uses # the resource. Won't reach # here until some_creation_function() # has completed at least once. the_resource[0].do_something() # create Dogpile with 3600 second # expiry time dogpile = Dogpile(3600) with dogpile.acquire(some_creation_function): use_the_resource()
上面,some_creation_function()将在第一次调用Dogpile.acquire()时被调用。然后继续执行with块的其余部分。在此初始期间调用Dogpile.acquire()的并发线程将被阻塞,直到some_creation_function()完成。
一旦创建函数第一次成功完成,对Dogpile.acquire()的新调用将在“expiretime”到达时每次调用some_creation_function(),允许只有一个线程调用该函数。在此期间调用Dogpile.acquire()的并发线程将直接通过,而不会被阻塞。预计在此期间,资源的“过时”版本仍然可用,而新的一个正在生成。
dogpile.core是dogpile.cache包的核心,该包提供基于dogpile概念的基本缓存API和示例后端。
开发状态
dogpile.core已在少数生产环境中使用了一段时间,截至0.3.2版本已进入测试版状态。尚未报告任何关于其核心同步模型的问题,整体上项目没有太多变化。大部分开发仍在dogpile.cache中进行。
项目详情
关闭
dogpile.core-0.4.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | be652fb11a8eaf66f7e5c94d418d2eaa60a2fe81dae500f3743a863cc9dbed76 |
|
MD5 | 01cb19f52bba3e95c9b560f39341f045 |
|
BLAKE2b-256 | 0e77e72abc04c22aedf874301861e5c1e761231c288b5de369c18be8f4b5c9bb |