Struct tower::retry::budget::Budget [−][src]
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) -> Budget
[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 singledeposit
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 todeposit
that can be retried. This is in addition to any retries allowed for viamin_per_sec
. Must be between 0 and 1000.As an example, if
0.1
is used, then for every 10 calls todeposit
, 1 retry will be allowed. If2.0
is used, then everydeposit
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
Auto Trait Implementations
impl RefUnwindSafe for Budget
impl Send for Budget
impl Sync for Budget
impl Unpin for Budget
impl UnwindSafe for Budget
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T> Instrument for T
[src]
pub fn instrument(self, span: Span) -> Instrumented<Self>
[src]
pub fn in_current_span(self) -> Instrumented<Self>
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,