Skip to content

Exceptions

_default_429_response module-attribute

_default_429_response = {
    "model": TooManyRequests,
    "headers": {
        "retry_after": {
            "description": "Retry after n seconds",
            "type": "integer",
        }
    },
}

RateLimitExceeded

Bases: HTTPException

exception raised when a rate limit is hit.

Source code in fastlimits/exceptions.py
class RateLimitExceeded(HTTPException):
    """
    exception raised when a rate limit is hit.
    """

    limit = None

    def __init__(
        self,
        limit: RateLimitItem,
        status_code: int = status.HTTP_429_TOO_MANY_REQUESTS,
        detail: Optional[str] = None,
        headers: Optional[Dict[str, str]] = None,
    ) -> None:
        self.limit = limit
        # TODO: calculate retry_after and add it to the headers
        super().__init__(
            status_code=status_code,
            detail=detail if detail else str(limit),
            headers=headers,
        )

limit class-attribute instance-attribute

limit = limit

__init__

__init__(
    limit: RateLimitItem,
    status_code: int = status.HTTP_429_TOO_MANY_REQUESTS,
    detail: Optional[str] = None,
    headers: Optional[Dict[str, str]] = None,
) -> None
Source code in fastlimits/exceptions.py
def __init__(
    self,
    limit: RateLimitItem,
    status_code: int = status.HTTP_429_TOO_MANY_REQUESTS,
    detail: Optional[str] = None,
    headers: Optional[Dict[str, str]] = None,
) -> None:
    self.limit = limit
    # TODO: calculate retry_after and add it to the headers
    super().__init__(
        status_code=status_code,
        detail=detail if detail else str(limit),
        headers=headers,
    )

TooManyRequests

Bases: BaseModel

Source code in fastlimits/exceptions.py
class TooManyRequests(BaseModel):
    detail: str = "Rate limit exceeded: {x} per {y} {granularity}"

detail class-attribute instance-attribute

detail: str = (
    "Rate limit exceeded: {x} per {y} {granularity}"
)