15个版本 (4个重大更新)
0.5.2 | 2022年2月17日 |
---|---|
0.5.1 | 2021年12月26日 |
0.4.0 | 2021年12月26日 |
0.3.2 | 2021年9月23日 |
0.1.4 | 2021年1月20日 |
在#token-bucket分类中排名6
每月下载量789次
在3个crate中使用(通过rosu-v2)
31KB
485 代码行
leaky-bucket-lite
基于漏桶算法的令牌速率限制器,主要是对udoprog的漏桶算法的懒实现,具有更少的依赖和开销。
如果令牌已经可用,将通过快速路径立即获取,并将获取的令牌数量添加到桶中。
如果没有,尝试获取令牌的任务将被挂起,直到添加所需的令牌数量。
用法
将以下内容添加到您的Cargo.toml
leaky-bucket-lite = "0.4"
功能
leaky-bucket-lite提供3种实现
LeakyBucket
(线程安全,通过tokio
功能提供,默认开启)sync_threadsafe::LeakyBucket
(线程安全,通过sync-threadsafe
功能提供)sync::LeakyBucket
(非线程安全,通过sync
功能提供)。
要使用parking_lot
的锁定对象提高潜在性能,并使用sync-threadsafe
或tokio
,请启用parking_lot
功能。
示例
use leaky_bucket_lite::LeakyBucket;
use std::time::Duration;
#[tokio::main]
async fn main() {
let rate_limiter = LeakyBucket::builder()
.max(5)
.tokens(0)
.refill_interval(Duration::from_secs(1))
.refill_amount(1)
.build();
println!("Waiting for permit...");
// should take about 5 seconds to acquire.
rate_limiter.acquire(5).await;
println!("I made it!");
}
依赖关系
~2–8MB
~49K SLoC