13 个版本
新 0.5.0 | 2024年8月22日 |
---|---|
0.4.4 | 2024年4月8日 |
0.4.3 | 2024年3月8日 |
0.4.1 | 2023年5月19日 |
0.0.2 | 2022年4月14日 |
#55 in Rust 模式
180,007 每月下载量
用于 165 个 包(17 个直接使用)
75KB
1.5K SLoC
backon −
无需努力的退避重试。
流行的 backoff 的相反退避实现。
- 更新:由 Rust 版本 2021 和最新稳定版开发。
- 更简洁:基于迭代器的抽象,易于使用,易于定制。
- 更简单:基于特质的实现,像闭包提供的本地函数一样工作。
快速开始
重试阻塞函数。
use anyhow::Result;
use backon::BlockingRetryable;
use backon::ExponentialBuilder;
fn fetch() -> Result<String> {
Ok("hello, world!".to_string())
}
fn main() -> Result<()> {
let content = fetch.retry(&ExponentialBuilder::default()).call()?;
println!("fetch succeeded: {}", content);
Ok(())
}
重试异步函数。
use anyhow::Result;
use backon::ExponentialBuilder;
use backon::Retryable;
async fn fetch() -> Result<String> {
Ok(reqwest::get("https://www.rust-lang.net.cn").await?.text().await?)
}
#[tokio::main]
async fn main() -> Result<()> {
let content = fetch.retry(&ExponentialBuilder::default()).await?;
println!("fetch succeeded: {}", content);
Ok(())
}
贡献
查看 CONTRIBUTING.md 指南以获取有关如何开始为此项目做出贡献的更多详细信息。
获取帮助
许可证
根据 Apache 许可证,版本 2.0 许可。依赖关系
~0–1.4MB
~24K SLoC