pub struct Builder { /* private fields */ }
Expand description
Builder to configure retries
Construct with for_host()
.
Implementations§
Source§impl Builder
impl Builder
Sourcepub fn scoped(scope: impl Scope) -> Self
pub fn scoped(scope: impl Scope) -> Self
Create a scoped retry policy.
For a more convenient constructor, see for_host()
.
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 retying 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
builder.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()
}
})