#token-bucket #limiter #bucket #redis #token #rate

bucket-limiter

基于redis存储的类似令牌桶的限流库

3个不稳定版本

使用旧Rust 2015

0.2.0 2017年11月4日
0.1.1 2017年11月3日
0.1.0 2017年11月3日

11 in #token-bucket

MIT许可证

14KB
329

bucket-limiter-rs

基于redis存储的类似令牌桶的限流库 Python版本

示例(用例)

假设你有一个API服务,并想限制用户请求频率,例如

  • 每天10,000次请求
  • 每小时600次请求
  • 每10秒10次请求

你可以这样做

let limiter = RedisLimiter::default();
let key = format!("{}:{}", request.endpoint, request.method);
// Once one request has come
if (limiter.consume_one(key, 10, 10) &&
    limiter.consume_one(key, 3600, 600) &&
    limiter.consume_one(key, 24*3600, 10000)) {
    // Process the request
} else {
    // Reject the request
}

依赖项

~3MB
~80K SLoC