reqwest_retry::policies

Struct ExponentialBackoffBuilder

Source
pub struct ExponentialBackoffBuilder { /* private fields */ }

Implementations§

Source§

impl ExponentialBackoffBuilder

Source

pub fn retry_bounds( self, min_retry_interval: Duration, max_retry_interval: Duration, ) -> ExponentialBackoffBuilder

Add min & max retry interval bounds. Default [1s, 30m].

See ExponentialBackoff::min_retry_interval, ExponentialBackoff::max_retry_interval.

Panics if min_retry_interval > max_retry_interval.

Source

pub fn backoff_exponent(self, exponent: u32) -> ExponentialBackoffBuilder

Set backoff exponent. Default 3.

See ExponentialBackoff::backoff_exponent.

Source

pub fn build_with_max_retries(self, n: u32) -> ExponentialBackoff

Builds a ExponentialBackoff with the given maximum retries.

See ExponentialBackoff::max_n_retries.

Source

pub fn build_with_total_retry_duration( self, total_duration: Duration, ) -> ExponentialBackoff

Builds a ExponentialBackoff with ExponentialBackoff::max_n_retries calculated from an approximate total duration. So that after the resultant max_n_retries we’ll have (generally) retried past the given total_duration.

The actual duration will be approximate due to retry jitter, though this calculation is itself deterministic (based off mean jitter).

§Example
use retry_policies::policies::ExponentialBackoff;
use std::time::Duration;

let backoff = ExponentialBackoff::builder()
    .backoff_exponent(2)
    .retry_bounds(Duration::from_secs(1), Duration::from_secs(60 * 60))
    // set a retry count so we retry for ~3 hours
    .build_with_total_retry_duration(Duration::from_secs(3 * 60 * 60));

// mean delay steps: 1.5s, 3s, 6s, 12s, 24s, 48s, 96s, 192s,
//                   384s, 768s, 1536s, 3072s, 3600s, 3600s
// expected total delay: 13342.5s = 3.7h (least number of retries >= 3h)
assert_eq!(backoff.max_n_retries, 14);

Trait Implementations§

Source§

impl Default for ExponentialBackoffBuilder

Source§

fn default() -> ExponentialBackoffBuilder

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more