未提供项目描述
项目描述
yapcache
另一个Python缓存库。
目录
安装
pip install yapcache
使用
内存缓存
import asyncio
from yapcache import memoize
from yapcache.caches.memory import InMemoryCache
cache = InMemoryCache(maxsize=1_000, key_prefix=f"example:")
@memoize(cache, ttl=60, cache_key=lambda n: f"slow-{n}")
async def slow_fn(n: int):
await asyncio.sleep(n)
async def example():
await slow_fn(3)
await slow_fn(3) # cached!
asyncio.run(example())
Redis缓存
# ...
from redis.asyncio.client import Redis
from yapcache.caches.redis import RedisCache
redis_client = Redis()
cache = RedisCache(redis_client, key_prefix=f"example:")
多层缓存
# ...
from yapcache.caches import MultiLayerCache
redis_client = Redis()
cache = MultiLayerCache(
[InMemoryCache(maxsize=2_000), RedisCache(redis_client)],
key_prefix=f"example:",
)
使用lock
参数来防止暴风骤雨效应(只有一个协程/线程将执行工作并更新缓存)
# ...
from yapcache.distlock import RedisDistLock
@memoize(
cache,
ttl=60,
cache_key=lambda n: f"slow-{n}",
lock=lambda key: RedisDistLock(redis_client, key),
)
async def slow_fn(n: int):
# ...
使用best_before
来提供陈旧数据(在后台更新缓存)
@memoize(
cache,
ttl=60,
cache_key=lambda n: f"slow-{n}",
best_before=lambda n: time.time() + 30
)
async def slow_fn(n: int):
# ...
许可证
yapcache
在MIT许可证的条款下分发。
项目详情
下载文件
下载适合您平台的应用程序。如果您不确定选择哪一个,请了解有关安装包的更多信息。
源分布
yapcache-0.1.3.tar.gz (6.2 kB 查看散列)
构建分发版
yapcache-0.1.3-py3-none-any.whl (7.8 kB 查看哈希值)
关闭
yapcache-0.1.3.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a84df212543e164cc0fe71bb6839efa9d8366a5b8bc9019c5a232fd34c596204 |
|
MD5 | ee7a5495daddfba11349394402144b62 |
|
BLAKE2b-256 | f34a5ce4fb1ad1d56cc7b86a70d51d36593ca15ee2183bd443c6322e76f19cf1 |
关闭
yapcache-0.1.3-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0cbc850b7da0bb05c6c9a5c351408ba630ad91bae2e950af75d4d589b2097621 |
|
MD5 | 4fa3a6c6a016e917a2082b8a670c3956 |
|
BLAKE2b-256 | c04e21e02e9164801fd61df9d6b561af9fb8a2dae3c428d3ee4ebac94e497c4b |