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 模式

Download history 14433/week @ 2024-04-13 16776/week @ 2024-04-20 13917/week @ 2024-04-27 16145/week @ 2024-05-04 16351/week @ 2024-05-11 16604/week @ 2024-05-18 13862/week @ 2024-05-25 13772/week @ 2024-06-01 14143/week @ 2024-06-08 11745/week @ 2024-06-15 13803/week @ 2024-06-22 13351/week @ 2024-06-29 14844/week @ 2024-07-06 16217/week @ 2024-07-13 17376/week @ 2024-07-20 16017/week @ 2024-07-27

67,008 每月下载量
用于 27 个crate (7 个直接)

MIT/Apache

38KB
666 代码行

💫 tryhard

Embark Embark Crates.io Docs dependency status Build status

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?;

有关更多详细信息,请参阅 文档

贡献

Contributor Covenant

我们欢迎社区对该项目的贡献。

请阅读我们的 贡献指南 了解如何开始。

许可

许可方式为以下之一

任选其一。

贡献

除非您明确声明,否则根据 Apache-2.0 许可证定义的,您有意提交的任何贡献,均应按照上述方式双重许可,无需任何额外条款或条件。

依赖关系

~2.9–4.5MB
~78K SLoC