本文主要是介绍使用flask_limiter限制接口访问速率的方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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_addressapp = 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():passdef 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 expensiveexcept RateLimitExceeded: pass
这篇关于使用flask_limiter限制接口访问速率的方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!