Spaces:
Sleeping
Sleeping
| #!/usr/bin/env python3 | |
| # -*- coding: utf-8 -*- | |
| from math import ceil | |
| from fastapi import FastAPI, Request, Response | |
| from fastapi.routing import APIRoute | |
| from common.exception import errors | |
| def ensure_unique_route_names(app: FastAPI) -> None: | |
| """ | |
| :param app: FastAPI | |
| :return: | |
| """ | |
| temp_routes = set() | |
| for route in app.routes: | |
| if isinstance(route, APIRoute): | |
| if route.name in temp_routes: | |
| raise ValueError(f'Non-unique route name: {route.name}') | |
| temp_routes.add(route.name) | |
| async def http_limit_callback(request: Request, response: Response, expire: int) -> None: | |
| """ | |
| :param request: FastAPI | |
| :param response: FastAPI | |
| :param expire: | |
| :return: | |
| """ | |
| expires = ceil(expire / 1000) | |
| raise errors.HTTPError(code=429, msg='The request is too frequent, please try again later', headers={'Retry-After': str(expires)}) | |