pub struct Policy { /* private fields */ }Expand description
A retry policy.
Implementations§
Source§impl Policy
impl Policy
Sourcepub fn never() -> Policy
pub fn never() -> Policy
Create a retry policy that will never retry any request.
This is useful for disabling the Clients default behavior of retrying
protocol nacks.
Sourcepub fn for_host<S>(host: S) -> Policy
pub fn for_host<S>(host: S) -> Policy
Create a retry policy scoped to requests for a specific host.
This is a convenience method that creates a retry policy which only applies to requests targeting the specified host. Requests to other hosts will not be retried under this policy.
§Arguments
host- The hostname to match against request URIs (e.g., “api.example.com”)
§Example
use hpx::retry::Policy;
// Only retry requests to rust-lang.org
let policy = Policy::for_host("rust-lang.org");Sourcepub fn no_budget(self) -> Self
pub fn no_budget(self) -> Self
Set no retry budget.
Sets that no budget will be enforced. This could also be considered to be an infinite budget.
This is NOT recommended. Disabling the budget can make your system more susceptible to retry storms.
Sourcepub fn max_extra_load(self, extra_percent: f32) -> Self
pub fn max_extra_load(self, extra_percent: f32) -> Self
Sets the max extra load the budget will allow.
Think of the amount of requests your client generates, and how much load that puts on the server. This option configures as a percentage how much extra load is allowed via retries.
For example, if you send 1,000 requests per second, setting a maximum
extra load value of 0.3 would allow 300 more requests per second
in retries. A value of 2.5 would allow 2,500 more requests.
§Panics
The extra_percent value must be within reasonable values for a
percentage. This method will panic if it is less than 0.0, or greater
than 1000.0.
Sourcepub fn max_retries_per_request(self, max: u32) -> Self
pub fn max_retries_per_request(self, max: u32) -> Self
Set the max retries allowed per request.
For each logical (initial) request, only retry up to max times.
This value is used in combination with a token budget that is applied
to all requests. Even if the budget would allow more requests, this
limit will prevent. Likewise, the budget may prevent retrying up to
max times. This setting prevents a single request from consuming
the entire budget.
Default is currently 2 retries.
Sourcepub fn classify_fn<F>(self, func: F) -> Self
pub fn classify_fn<F>(self, func: F) -> Self
Provide a classifier to determine if a request should be retried.
§Example
policy.classify_fn(|req_rep| match (req_rep.method(), req_rep.status()) {
(&http::Method::GET, Some(http::StatusCode::SERVICE_UNAVAILABLE)) => req_rep.retryable(),
_ => req_rep.success(),
})Trait Implementations§
Auto Trait Implementations§
impl Freeze for Policy
impl !RefUnwindSafe for Policy
impl Send for Policy
impl Sync for Policy
impl Unpin for Policy
impl UnsafeUnpin for Policy
impl !UnwindSafe for Policy
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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