Use middleware to set a global limit for all handlers:¶
importaioredisfromfastapiimportFastAPIfromstarlette.responsesimportJSONResponsefromfastapi_ratelimiterimportRedisDependencyMarkerfromfastapi_ratelimiter.middlewaresimportGlobalRateLimitMiddlewarefromfastapi_ratelimiter.strategiesimportBucketingRateLimitStrategyapp=FastAPI()@app.get("/some_expensive_call",response_class=JSONResponse)asyncdefhandle_test_endpoint():return{"hello":"world"}app.dependency_overrides[RedisDependencyMarker]=aioredis.from_url("redis://localhost")# 1000 requests per one hour on all routesapp.add_middleware(GlobalRateLimitMiddleware,rate_limit_strategy=BucketingRateLimitStrategy(rate="1000/h"))