Skip to content

Reference API

The following classes are exposed to the user:

httpx_limiter

Provide top level symbols.

Rate

Bases: NamedTuple

Define the rate.

duration: timedelta instance-attribute

magnitude: float instance-attribute

create(magnitude: Number = 1, duration: timedelta | Number = 1) -> Rate classmethod

Create a rate.

in_seconds() -> float

Return the duration in unit seconds.

AsyncRateLimitedTransport

Bases: AsyncBaseTransport

Define the asynchronous rate-limited transport.

This transport consists of a composed transport for handling requests and an implementation of a leaky bucket algorithm in order to rate-limit the number of requests.

__init__(*, limiter: AsyncLimiter, transport: httpx.AsyncBaseTransport, **kwargs) -> None

create(*, rate: Rate, **kwargs: dict) -> AsyncRateLimitedTransport classmethod

Create an instance of asynchronous rate-limited transport.

This factory method constructs the instance with an underlying httpx.AsyncHTTPTransport. That transport is passed any additional keyword arguments.

Parameters:

Name Type Description Default
rate Rate

The maximum rate per interval at which bucket capacity is restored.

required
**kwargs dict

Additional keyword arguments are used in the construction of an httpx.AsyncHTTPTransport.

{}

Returns:

Type Description
AsyncRateLimitedTransport

A default instance of the class created from the given arguments.

handle_async_request(request: httpx.Request) -> httpx.Response async

Handle an asynchronous request with rate limiting.

AbstractRateLimiterRepository

Bases: ABC

Define the abstract repository for rate limiters.

__init__(**kwargs) -> None

get(request: httpx.Request) -> AsyncLimiter

Return a request-specific rate limiter.

get_identifier(request: httpx.Request) -> str abstractmethod

Return a request-specific identifier.

get_rate(request: httpx.Request) -> Rate abstractmethod

Return a request-specific rate.

AsyncMultiRateLimitedTransport

Bases: AsyncBaseTransport

Define the asynchronous multiple rate-limited transport.

This transport consists of a composed transport for handling requests and a repository for rate limiters that are selected based on the request.

__init__(*, repository: AbstractRateLimiterRepository, transport: httpx.AsyncBaseTransport, **kwargs) -> None

create(*, repository: AbstractRateLimiterRepository, **kwargs: dict) -> AsyncMultiRateLimitedTransport classmethod

Create an instance of an asynchronous multiple rate-limited transport.

This factory method constructs the instance with an underlying httpx.AsyncHTTPTransport. That transport is passed any additional keyword arguments.

Parameters:

Name Type Description Default
repository AbstractRateLimiterRepository

The repository to use for rate limiters.

required
**kwargs dict

Additional keyword arguments are used in the construction of an httpx.AsyncHTTPTransport.

{}

Returns:

Type Description
AsyncMultiRateLimitedTransport

A default instance of the class created from the given arguments.

handle_async_request(request: httpx.Request) -> httpx.Response async

Handle an asynchronous request with rate limiting.