px普贤教程PuXian
普贤教程 › 包参考

rate 包

令牌桶限流

项值
包名rate
版本0.2.0
可用版本0.1.0 / 0.2.0
入口rate.px
分类并发与通用模式
文件数 / 行数1 / 115

安装与引入

bash
pxpkg init          # 首次
pxpkg add rate@0.2.0
pxpkg install
px
import rate
所属分类教程:并发与通用模式

公开接口

函数参数
rt_newcapacity, rate
rt_tokensb, now
rt_allowb, now
rt_allow_nb, n, now
其余 7 个 def(内部与辅助,可直接调用但不属稳定接口)
函数参数
rt_copyb
rt_refillb, now
rt_take_nb, n, now
rt_wait_timeb, n, now
rt_resetb
rt_statsb, now
rt_allow_batchb, count, now

包内说明(源码头注释)

text
============================================================
普贤生态库:registry/rate —— 令牌桶限流
------------------------------------------------------------
纯函数库(无 IO、无状态),编译(px build)与解释(px run)双模式一致。
rt_new(capacity, rate)            → dict   新建满桶
rt_allow(bucket, now)             → [新桶, bool]     消耗 1 令牌(不足拒绝)
rt_allow_n(bucket, n, now)        → [新桶, bool]     消耗 n 令牌
rt_tokens(bucket, now)            → [新桶, int]      当前令牌数(先补满到 now)
状态表示:dict {cap:int, rate:int(每秒令牌数), tokens:int, last:int(秒时间戳)}
语义:
- 令牌按 (now - last) * rate 补给,上限 cap(初始满桶,允许突发)
- now 为 Unix 秒(可用 now_sec());tokens 以整数记(子集)
- 纯函数:所有操作返回新桶状态,不改传入 dict(写库规范:顶层无状态)
- 并发场景由调用方持有桶状态(chan + mutex 需编译模式,见 PX-DEF-006)
============================================================
新建满桶