[][src]Struct tower::retry::budget::Budget

pub struct Budget { /* fields omitted */ }
This is supported on crate feature retry only.

Represents a "budget" for retrying requests.

This is useful for limiting the amount of retries a service can perform over a period of time, or per a certain number of requests attempted.

Implementations

impl Budget[src]

pub fn new(ttl: Duration, min_per_sec: u32, retry_percent: f32) -> Self[src]

Create a Budget that allows for a certain percent of the total requests to be retried.

  • The ttl is the duration of how long a single deposit should be considered. Must be between 1 and 60 seconds.

  • The min_per_sec is the minimum rate of retries allowed to accomodate clients that have just started issuing requests, or clients that do not issue many requests per window.

  • The retry_percent is the percentage of calls to deposit that can be retried. This is in addition to any retries allowed for via min_per_sec. Must be between 0 and 1000.

    As an example, if 0.1 is used, then for every 10 calls to deposit, 1 retry will be allowed. If 2.0 is used, then every deposit allows for 2 retries.

pub fn deposit(&self)[src]

Store a "deposit" in the budget, which will be used to permit future withdrawals.

pub fn withdraw(&self) -> Result<(), Overdrawn>[src]

Check whether there is enough "balance" in the budget to issue a new retry.

If there is not enough, an Err(Overdrawn) is returned.

Trait Implementations

impl Debug for Budget[src]

impl Default for Budget[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T> Instrument for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

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