6 个版本 (破坏性)
0.5.1 | 2023 年 9 月 5 日 |
---|---|
0.4.0 | 2021 年 4 月 7 日 |
0.3.1 | 2020 年 2 月 9 日 |
0.2.1 | 2018 年 11 月 11 日 |
0.1.1 | 2018 年 5 月 31 日 |
#118 in 异步
每月 42,831 次下载
在 3 crate 中使用
14KB
205 行
stream_throttle
提供 Rust Rust Stream
组合器,用于限制产生项的速度。
关键特性
- 节流通过
poll()
实现,而不是通过任何形式的缓冲。 - 节流行为可以应用于
Stream
和Future
。 - 可以将多个流/未来作为一组进行节流。
- 特性标志以使用各种定时器实现。
特性标志
timer-tokio
: 使用tokio::time::delay_for()
定时器。timer-futures-timer
: 使用futures_timer::Delay
定时器。
如果你不使用默认定时器(tokio
),请确保在将 stream_throttle
作为依赖项添加到 Cargo.toml
时设置 default-features = false
。
示例 Stream
节流
// allow no more than 5 items every 1 second
let rate = ThrottleRate::new(5, Duration::new(1, 0));
let pool = ThrottlePool::new(rate);
let work = stream::repeat(())
.throttle(pool)
.then(|_| futures::future::ready("do something else"))
.for_each(|_| futures::future::ready(()));
work.await;
示例 Future
节流
let rate = ThrottleRate::new(5, Duration::new(1, 0));
let pool = ThrottlePool::new(rate);
let work = pool.queue()
.then(|_| futures::future::ready("do something else"));
work.await;
依赖项
~0.7–2MB
~36K SLoC