使用flask_limiter限制接口访问速率的方法

flask_limiter

目录

1.简介

这里简单介绍了一些使用flask_limiter的方法。具体详细可参考官方文档

https://flask-limiter.readthedocs.io/en/stable/

2.安装

shell 复制代码
pip install flask_socketio

3.初始化

python 复制代码
from flask import Flask
from flask_limiter import Limiter
from flask_limiter.util import get_remote_address

app = Flask(__name__)
limiter = Limiter(
    get_remote_address,
    app=app,
    default_limits=["200 per day", "50 per hour"],  # 这里是所有接口的默认访问上限限制
)

4.装饰器用法

在想要限制访问速率的函数前面加上装饰器,里面写限制规则,例如1 per day、1/second

示例:

python 复制代码
@app.route("/slow")
@limiter.limit("1 per day")
def slow():
    return ":("


@app.route("/medium")
@limiter.limit("1/second", override_defaults=False)
def medium():
    return ":|"


@app.route("/fast")
def fast():
    return ":)"


@app.route("/ping")
@limiter.exempt
def ping():
    return "PONG"

例如.limit("100/day;10/hour;1/minute")可以使用limiter单个装饰器设置多条规则

也可以使用多个装饰器设置多条规则

可以使用.limit("100/day", my_key_func)的方式调用自己的处理函数

python 复制代码
@limiter.limit("100/day;10/hour;1/minute")
def my_route():
    pass


@limiter.limit("100/day")
@limiter.limit("10/hour")
@limiter.limit("1/minute")
def my_route():
    pass


def my_key_func():
    pass

@limiter.limit("100/day", my_key_func)
def my_route():
    pass

5.limit用法

如果不希望使用装饰器,可以使用try加在函数里,捕获异常返回429

python 复制代码
@app.route("/")
def route():
   try:
       with limiter.limit("10/second"):
           # something expensive
   except RateLimitExceeded: pass
相关推荐
云姜.6 分钟前
JSON Schema使用
python·json
Sunshine for you12 分钟前
使用Flask快速搭建轻量级Web应用
jvm·数据库·python
爱丽_14 分钟前
Spring 事务:传播行为、失效场景、回滚规则与最佳实践
java·后端·spring
qwehjk200816 分钟前
如何从Python初学者进阶为专家?
jvm·数据库·python
用户31673613034221 分钟前
SSE消息推送前后端代码
前端·后端
小熊Coding24 分钟前
重庆市旅游景点数据可视化分析系统
爬虫·python·数据挖掘·数据分析·计算机毕业设计·数据可视化分析·旅游景点
搬搬砖得了26 分钟前
当 GraphQL 变成“全家桶”,Stream 写成“天书”,老板变身“谜语人”:我在代码屎山里的渡劫日常
后端
默海笑30 分钟前
Java 基础 12:JavaDoc 生成文档 学习笔记
后端
sg_knight33 分钟前
CentOS 裸机实操:5分钟完成 MinIO 单机部署与公网访问
linux·python·centos·文件管理·minio·ftp·oss
写Cpp的小黑黑34 分钟前
React Native 项目实战指南
后端