Skip to main content

ThrottlePolicy

Struct ThrottlePolicy 

Source
pub struct ThrottlePolicy {
    pub base_delay_ms: u64,
    pub adaptive_jitter_ms: u64,
    pub max_concurrent: usize,
    pub max_retries: usize,
}
Expand description

Defines the throttling and backoff behavior for handling HTTP requests.

This policy determines the rate limiting strategy used for outgoing requests, including fixed delays, adaptive backoff, and retry settings.

Fields§

§base_delay_ms: u64

The base delay (in milliseconds) applied before making a request.

This ensures a minimum delay between consecutive requests.

§adaptive_jitter_ms: u64

The maximum random jitter (in milliseconds) added to the backoff delay.

This prevents synchronization issues when multiple clients are making requests, reducing the likelihood of rate-limit collisions.

§max_concurrent: usize

The maximum number of concurrent requests allowed at any given time.

This controls parallel request execution, ensuring that no more than max_concurrent requests are in-flight simultaneously.

§max_retries: usize

The maximum number of retries allowed in case of failed requests.

If a request fails (e.g., due to a server error or rate limiting), it will be retried up to max_retries times with exponential backoff.

Trait Implementations§

Source§

impl Clone for ThrottlePolicy

Source§

fn clone(&self) -> ThrottlePolicy

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ThrottlePolicy

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for ThrottlePolicy

Source§

fn default() -> Self

Provides a sensible default throttling policy.

This default configuration is suitable for most API use cases and includes:

  • A base delay of 500ms between requests.
  • A random jitter of up to 250ms to avoid synchronization issues.
  • A maximum of 5 concurrent requests to prevent excessive load.
  • A maximum of 3 retries for failed requests.
§Returns

A ThrottlePolicy instance with preconfigured defaults.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more