在FastAPI中實現API速率限制可以使用第三方工具fastapi-limiter
來實現。以下是實現方法:
fastapi-limiter
庫:pip install fastapi-limiter
Limiter
中間件來實現速率限制:from fastapi import FastAPI
from fastapi_limiter import FastAPILimiter
from fastapi_limiter.depends import RateLimiter
app = FastAPI()
# 設置速率限制
limiter = FastAPILimiter(key_func=lambda _: "1", rate_limits={"10 per minute"})
@app.middleware("http")
async def limiter_middleware(request: Request, call_next):
return await limiter.middleware(request, call_next)
@app.get("/items/")
async def read_items():
return {"message": "Hello World"}
在上面的示例中,我們創建了一個Limiter
實例,并通過中間件將其應用到FastAPI應用中。我們設置了每分鐘最多可以訪問10次API的速率限制。
通過使用RateLimiter
依賴可以在具體的路由函數中設置不同的速率限制,例如:
@app.get("/items/{item_id}")
async def read_item(item_id: int, rate_limiter=Depends(RateLimiter(key="ip", rate_limits="5 per minute"))):
return {"item_id": item_id}
以上就是在FastAPI中實現API速率限制的方法。通過使用fastapi-limiter
庫,我們可以方便地對API請求進行速率限制,保護服務器免受惡意請求的影響。