#token-bucket #rate-limiting #package #time

ratelimit_rs

ratelimit包提供了一个高效的令牌桶实现

1个不稳定版本

0.1.4 2021年4月1日
0.1.3 2021年4月1日
0.1.2 2021年3月27日
0.1.1 2021年3月27日
0.1.0 2021年3月27日

#1628 in Rust模式

MIT许可证

10KB
125

ratelimit_rs

-- 使用 ratelimit::Bucket;

ratelimit包提供了一个高效的令牌桶实现。请参阅http://en.wikipedia.org/wiki/Token_bucket

提交错误 请参阅https://github.com/jimizai/ratelimit_rs/issues。我会及时处理。

用法

struct Bucket

Bucket表示一个以预定速率填充的令牌桶。可以对Bucket上的方法进行并发调用。

let bucket = Bucket::new(fill_interval: Duration, capacity: u64, quantum: u64, available_tokens: u64);

Bucket::new返回一个新的令牌桶,以每fillInterval填充一个令牌的速率填充,最大容量为给定的容量。两个参数都必须是正数。桶最初是满的。

fn take_available

bucket.take_available(count: u64) -> u64;

TakeAvailable立即从桶中取出最多count个可用的令牌。它返回移除的令牌数,如果没有可用的令牌则返回零。它不会阻塞。

fn take_max_duration

bucket.take_max_duration(count: u64, max_wait: Duration) -> (Duration, bool);

TakeMaxDuration是take,但它只会从桶中取出令牌,如果等待令牌的时间不大于maxWait。

如果取令牌需要超过maxWait的时间,它将不执行任何操作并返回false,否则它返回调用者应等待直到令牌实际可用的时间,并返回true。

fn wait_max_duration

bucket.wait_max_duration(count: u64, max_wait: Duration) -> bool;

WaitMaxDuration类似于Wait,但它只会取出桶中的令牌,如果需要等待的时间不大于maxWait。它报告是否从桶中移除了任何令牌。如果没有移除任何令牌,它将立即返回。

没有运行时依赖项