taolib.github_app.cache#
GitHub App 安装令牌的内存缓存实现。
本模块提供进程内、异步友好的轻量级缓存,适用于单进程场景。 如需跨进程共享,可另行实现同接口的 Redis / Memcached 适配器。
Classes#
基于 OrderedDict 的异步安装令牌缓存(LRU 淘汰)。 |
Module Contents#
- class taolib.github_app.cache.InMemoryInstallationTokenCache(maxsize: int = 256)#
基于 OrderedDict 的异步安装令牌缓存(LRU 淘汰)。
本实现支持 TTL 主动过期:通过
purge_expired()手动清理, 或通过start_purge_task()启动后台周期清理协程。 过期识别与提前刷新需配合is_stale()使用。初始化一个空的内存缓存容器。
- 参数:
maxsize -- 缓存最大条目数,超出时淘汰最久未访问的条目。
- async get(key: str) taolib.github_app.models.InstallationTokenResult | None#
读取缓存中给定键的令牌结果。
命中时将该键移至末尾,实现 LRU 淘汰语义: 最近被访问的 key 不会被优先淘汰。
- 参数:
key -- 令牌管理器构建的缓存键。
- 返回:
命中时返回
InstallationTokenResult,未命中时返回None。
- is_stale(result: taolib.github_app.models.InstallationTokenResult, eager_refresh_seconds: int) bool#
判断令牌是否已进入“提前刷新窗口”。
以当前 UTC 时间与
expires_at - eager_refresh_seconds比较: 当现在已到达或超过该阈值时,认为需要提前刷新。- 参数:
result -- 缓存中的令牌结果。
eager_refresh_seconds -- 提前刷新窗口的秒数。
- 返回:
True表示已进入提前刷新窗口,应触发刷新;否则为False。
- async set(key: str, result: taolib.github_app.models.InstallationTokenResult) None#
写入或覆盖缓存中的令牌结果。
当缓存已满且 key 为新键时,淘汰最久未访问的条目(LRU)。
- 参数:
key -- 令牌管理器构建的缓存键。
result -- 待缓存的令牌结果。
- start_purge_task(interval_seconds: int = 300) asyncio.Task[None]#
启动后台周期清理协程。
- 参数:
interval_seconds -- 清理间隔秒数,默认 300 秒。
- 返回:
后台清理任务的 asyncio.Task 对象。