2 个版本
0.1.1 | 2024 年 8 月 2 日 |
---|---|
0.1.0 | 2024 年 8 月 1 日 |
#519 in 并发
每月 233 次下载
9KB
165 行
并发队列任务处理库
这个 Rust 库为处理高并发场景下的队列任务提供了一种稳健的解决方案。它确保任务按顺序处理,增强服务稳定性。此外,它还允许配置并行任务处理以优化性能。
特性
- 基于队列的任务管理:任务按顺序入队和处理。
- 高并发处理:设计用于高负载环境以保持稳定性。
- 可配置的并行处理:通过参数设置同时处理的任务数量。
安装
将以下内容添加到您的 Cargo.toml
[dependencies]
queued-task = "0.1.0"
用法
use std::sync::Arc;
use std::time::Duration;
use queued_task::QueuedTaskBuilder;
#[tokio::test]
async fn test() {
// 10 queue_len, 2 process rate
let t = Arc::new(QueuedTaskBuilder::new(10, 2).handle(handle).build());
async fn handle(wait_time: Duration, c: usize) -> usize {
tokio::time::sleep(Duration::from_secs(1)).await;
println!("{} {}", c, wait_time.as_millis());
c
}
let mut ts = vec![];
for i in 0..20 {
let tt = t.clone();
ts.push(tokio::spawn(async move {
// push task
let state = tt.push(i).await.unwrap();
// waiting for task result
let result = state.wait_result().await;
dbg!(result);
}));
}
for x in ts {
let _ = x.await;
}
}
依赖项
~2–3MB
~47K SLoC