flask_limiter
目录
- flask_limiter
-
- 1.简介
- 2.安装
- 3.初始化
- 4.装饰器用法
- 5.limit用法
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