10 个版本 (5 个稳定版)
2.0.1 | 2021 年 10 月 13 日 |
---|---|
2.0.0 | 2021 年 1 月 3 日 |
1.0.2 | 2021 年 1 月 3 日 |
1.0.1 | 2020 年 11 月 29 日 |
0.1.2 | 2020 年 2 月 27 日 |
#916 在 异步
每月下载量 28
10KB
134 行
一个小巧的 crate,为 futures-rs 的 threadpool 执行器提供额外功能。当前的 futures::future::ThreadPool
执行器没有内置的处理 panic、手动停止池执行或将错误回传给调用者的方式。该 crate 通过这些限制(一旦 这个开放问题得到解决,它可能就会过时)。
该 crate 的用例包括
- 如果任何在它上运行的未来遇到无法恢复的错误并返回 Err(),则停止执行未来。
- 让调用者处理错误。
- 根据用户请求停止线程池及其生成任务。
⚠ 这个 crate 正在被动维护。它在我的现有项目中运行得很好。然而,我将在新项目中使用 smol 作为我的 futures 执行器。smol 任务处理程序提供了相同的功能(还有更多),使这个 crate 过时。
用法
以下示例演示了失败任务的处理
async fn forever() -> Result<(),String> {
loop {}
}
async fn fail(msg: String) -> Result<(),String> {
Err(msg)
}
let mut pool = StoppableThreadPool::new()?;
let err = "fail_function_called".to_string();
pool.spawn(fail(err.clone()));
pool.spawn(forever());
assert_eq!(
pool.observe().await.unwrap_err(),
err
)
有关更多用法示例,请参阅 lib.rs 中的测试。
许可证
该项目受以下任一许可证的约束
- Apache 许可证 2.0 版,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
您可任选其一。
贡献
除非您明确说明,否则任何有意提交给 poolparty 的贡献,根据 Apache-2.0 许可证的定义,都应按上述方式双许可,不附加任何额外条款或条件。
依赖关系
~5–18MB
~191K SLoC