3个不稳定版本
0.6.1 | 2022年11月21日 |
---|---|
0.6.0 | 2019年12月9日 |
0.5.0 | 2019年12月6日 |
#309 in 异步
16,789 每月下载量
用于 2 crates
14KB
206 代码行
futures-batch
一个将流中完成的futures分块并在超时或缓冲区满后刷新的适配器。它基于futures-util的Chunks
适配器,我们为其添加了超时。
(该项目最初命名为tokio-batch
,但因为它不再依赖于Tokio,所以进行了重命名。)
用法
作为独立的流操作符或直接作为组合器
use std::time::Duration;
use futures::{stream, StreamExt};
use futures_batch::ChunksTimeoutStreamExt;
#[tokio::main]
async fn main() {
let iter = vec![0, 1, 2, 3, 4, 5, 6, 7, 8, 9].into_iter();
let results = stream::iter(iter)
.chunks_timeout(5, Duration::new(10, 0))
.collect::<Vec<_>>();
assert_eq!(vec![vec![0, 1, 2, 3, 4], vec![5, 6, 7, 8, 9]], results.await);
}
上面的代码迭代一个流,并使用10秒的超时创建大小为5的块。
注意: 这是在使用futures 0.3
crate。
性能
futures-batch
对您的应用程序施加了非常低的开销。例如,它甚至被用来批处理系统调用。
在底层,我们使用futures-timer
,它允许微秒级定时器分辨率。如果您找到一个未涵盖的使用案例,请不要犹豫,提出一个问题。
致谢
依赖项
~1MB
~16K SLoC