Skip to content

Ratelimiter

ratelimiter

rate limiter for HTTP / REST request of clients.

RateLimiter(requests_per_minute: int)

Simple request rate limiter.

Source code in src/equities_classifier/clients/ratelimiter.py
def __init__(self, requests_per_minute: int) -> None:
    """Initialize RateLimiter."""

    self._min_interval = 60.0 / requests_per_minute
    self._last_request: float | None = None

wait() -> None

Wait until the next request is allowed.

Source code in src/equities_classifier/clients/ratelimiter.py
def wait(self) -> None:
    """Wait until the next request is allowed."""

    if self._last_request is None:
        self._last_request = monotonic()
        return

    elapsed = monotonic() - self._last_request

    if elapsed < self._min_interval:
        sleep(self._min_interval - elapsed)

    self._last_request = monotonic()

RateLimits(max_batch_size: int, requests_per_minute: int) dataclass

Rate limit configuration.

max_batch_size: int instance-attribute

min_request_interval: float property

Minimum interval between two requests in seconds.

requests_per_minute: int instance-attribute