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

flask_limiter

1.简介

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

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

2.安装

pip install flask_socketio

3.初始化

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

示例:

@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)的方式调用自己的处理函数

@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

@app.route("/")
def route():
   try:
       with limiter.limit("10/second"):
           # something expensive
   except RateLimitExceeded: pass

相关推荐

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

    2024-01-23 08:44:01       56 阅读
  2. 限制API接口访问速率

    2024-01-23 08:44:01       55 阅读
  3. webform使用ajax访问后端接口两种方法

    2024-01-23 08:44:01       56 阅读
  4. Kong 速率限制

    2024-01-23 08:44:01       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-23 08:44:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-23 08:44:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-23 08:44:01       87 阅读
  4. Python语言-面向对象

    2024-01-23 08:44:01       96 阅读

热门阅读

  1. AcWing 1229.日期问题(枚举题,细节多)

    2024-01-23 08:44:01       55 阅读
  2. c# OpenTK 入门

    2024-01-23 08:44:01       53 阅读
  3. gin框架复习

    2024-01-23 08:44:01       55 阅读
  4. Elasticsearch 查询超过10000 的解决方案 - Python

    2024-01-23 08:44:01       63 阅读
  5. vue v-for 为什么要加 key

    2024-01-23 08:44:01       44 阅读
  6. mac os电脑用n切换node版本

    2024-01-23 08:44:01       46 阅读