13个版本 (5个破坏性更新)
0.6.2 | 2024年8月3日 |
---|---|
0.6.0 | 2024年6月15日 |
0.5.1 | 2024年2月16日 |
0.1.2 | 2023年5月30日 |
#849 in 异步
每月216次下载
用于 spaghettinuum
14KB
274 代码行
这是一个管理异步任务的工具。
例如,您可能有一些周期性的后台任务,加上几个Web服务器。使用 TaskManager
您可以将这些任务分组,并以优雅的方式作为一个组关闭它们,等待它们全部结束。
处理
- 长任务
- 简单的周期性任务(调用之间的固定睡眠时间)
- 异步流
- Ctrl+c关闭
用法
let tm = TaskManager::new();
tm.attach_sigint({
log2 = logger.clone();
|e| log2.err("Error handling sigint", e)
});
let tm1 = tm.clone();
let log2 = logger.clone();
tm.task(async move {
match tm1.if_alive(server).await {
Some(r) => match r {
Ok(_) => {} // Server exited normally
Err(e) => {
log.err("Server died with error", e);
}
},
None => {} // Received shutdown
};
});
tm.join().await;
依赖
~7–18MB
~243K SLoC