⌘K

Icon Link重试请求

当接收到 io::Error 时,可以配置 Provider Icon Link 进行重试请求。

Icon InfoCircle

注意:当前所有节点错误都作为 io::Error 接收。因此,如果配置了重试,即使例如事务验证失败,也会进行重试。

我们可以通过以下方式配置重试尝试次数和重试策略。

Icon LinkRetryConfig

可以通过提供自定义的 RetryConfig 来更改重试行为。它允许配置尝试的最大次数和使用的间隔策略。

#[derive(Clone, Debug)]
pub struct RetryConfig {
    max_attempts: NonZeroU32,
    interval: Backoff,
}
let retry_config = RetryConfig::new(3, Backoff::Fixed(Duration::from_secs(2)))?;
let provider = setup_test_provider(coins.clone(), vec![], None, None)
    .await?
    .with_retry_config(retry_config);

Icon Link间隔策略 - Backoff

Backoff 定义了不同的策略来管理重试尝试之间的间隔。 每种策略都允许您根据尝试次数自定义新尝试之前的等待时间。

Icon Link变体

  • Linear(Duration): Default 使用线性增加的方式增加等待时间。
  • Exponential(Duration): 每次尝试时等待时间加倍。
  • Fixed(Duration): 尝试之间使用恒定的等待时间。
#[derive(Debug, Clone)]
pub enum Backoff {
    Linear(Duration),
    Exponential(Duration),
    Fixed(Duration),
}