pub struct TpsBudget { /* private fields */ }
Expand description
A Transactions Per Minute config for managing retry tokens.
TpsBudget
uses a token bucket to decide if the request should be retried.
TpsBudget
works by checking how much retries have been made in a certain period of time.
Minimum allowed number of retries are effectively reset on an interval. Allowed number of
retries depends on failed request count in recent time frame.
For more info about Budget
, please see the module-level documentation.
Implementations§
Source§impl TpsBudget
impl TpsBudget
Sourcepub fn new(ttl: Duration, min_per_sec: u32, retry_percent: f32) -> TpsBudget
pub fn new(ttl: Duration, min_per_sec: u32, retry_percent: f32) -> TpsBudget
Create a TpsBudget
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 accommodate 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.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for TpsBudget
impl RefUnwindSafe for TpsBudget
impl Send for TpsBudget
impl Sync for TpsBudget
impl Unpin for TpsBudget
impl UnwindSafe for TpsBudget
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more