SlowApi 接口速率限制器 - FastAPI

安全防范必备, 用最小的侵入添加 FastAPI 接口限流功能吧(¬‿¬)

0%

🔎 Github: https://github.com/laurentS/slowapi
📖 Docs: https://slowapi.readthedocs.io/en/latest/#fastapi

简单介绍

  • 可以使用单个或多个限制修饰器来将限制应用到端点函数上
  • 使用内存来保存计数器(默认)
  • 支持同步和异步HTTP端点
  • 支持在一组路由之间共享限制

安装库

pip install slowapi

使用例子

from fastapi import FastAPI
from slowapi import Limiter, _rate_limit_exceeded_handler
from slowapi.util import get_remote_address
from slowapi.errors import RateLimitExceeded

# 配置key生成方式/限速依据: 根据IP生成唯一key
limiter = Limiter(key_func=get_remote_address)

app = FastAPI()
app.state.limiter = limiter
app.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler)

# Note: 路由装饰器必须在限制装饰器之上, 而不是之下
@app.get("/home")
@limiter.limit("5/minute")
async def homepage(request: Request): # Note: 接口request对象必须定义, 不然无法挂载插件
return PlainTextResponse("test")

@app.get("/mars")
@Limiter.limit("2/second")
@limiter.limit("50/minute")
async def homepage(request: Request, response: Response):
return {"key": "value"}
------------ 已触及底线了 感谢您的阅读 ------------
  • 本文作者: OWQ
  • 本文链接: https://www.owq.world/2c817785/
  • 版权声明: 本站所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处( ̄︶ ̄)↗