6 个版本 (破坏性更新)
0.5.1 | 2023 年 8 月 23 日 |
---|---|
0.5.0 | 2022 年 9 月 1 日 |
0.4.0 | 2021 年 6 月 22 日 |
0.3.0 | 2021 年 1 月 7 日 |
0.1.0 | 2020 年 11 月 23 日 |
#161 in Rust 模式
67,008 每月下载量
用于 27 个crate (7 个直接)
38KB
666 代码行
💫 tryhard
tryhard
使得重试可能失败的异步操作变得容易。您可以控制重试次数、退避策略和最大持续时间。
示例
首先想象你有一些可能会失败的异步函数
async fn read_file(path: &str) -> Result<String, std::io::Error> {
// ...
}
调用该函数并在尝试之间没有延迟的情况下最多重试 10 次,可以这样做
tryhard::retry_fn(|| read_file("Cargo.toml"))
.retries(10)
.await?;
您还可以在尝试之间使用固定延迟进行重试
tryhard::retry_fn(|| read_file("Cargo.toml"))
.retries(10)
.fixed_backoff(Duration::from_millis(100))
.await?;
或指数退避,每次延迟加倍,最大延迟为 1 秒
tryhard::retry_fn(|| read_file("Cargo.toml"))
.retries(10)
.exponential_backoff(Duration::from_millis(10))
.max_delay(Duration::from_secs(1))
.await?;
有关更多详细信息,请参阅 文档。
贡献
我们欢迎社区对该项目的贡献。
请阅读我们的 贡献指南 了解如何开始。
许可
许可方式为以下之一
- Apache 许可证 2.0 版,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则根据 Apache-2.0 许可证定义的,您有意提交的任何贡献,均应按照上述方式双重许可,无需任何额外条款或条件。
依赖关系
~2.9–4.5MB
~78K SLoC