Flask-Limiter provides rate limiting features to flask routes. It has support for a configurable backend for storage with current implementations for in-memory, redis and memcache. Flask-Limiter對flask的路由功能提供訪問速率限制的功能。訪問的信息可以存儲到應用本身的內存里,或者存儲到redis、memcache里
舉例demo:
from flask import Flask from flask_limiter import Limiter from flask_limiter.util import get_remote_address app = Flask(__name__) limiter = Limiter( app, key_func=get_remote_address, //根據訪問者的IP記錄訪問次數 default_limits=["200 per day", "50 per hour"] //默認限制,一天最多訪問200次,一小時最多訪問50次 ) @app.route("/slow") @limiter.limit("1 per day") //自定義訪問速率 def slow(): return "24" @app.route("/fast") //默認訪問速率 def fast(): return "42" @app.route("/ping") @limiter.exempt //無訪問速率限制 def ping(): return "PONG"
效果:
$ curl localhost:5000/fast 42 $ curl localhost:5000/fast 42 $ curl localhost:5000/fast <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <title>429 Too Many Requests</title> <h1>Too Many Requests</h1> <p>2 per 1 minute</p> $ curl localhost:5000/slow 24 $ curl localhost:5000/slow <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <title>429 Too Many Requests</title> <h1>Too Many Requests</h1> <p>1 per 1 day</p> $ curl localhost:5000/ping PONG $ curl localhost:5000/ping PONG $ curl localhost:5000/ping PONG $ curl localhost:5000/ping PONG
注釋:
The built in flask static files routes are also exempt from rate limits.
即靜態文件的訪問無速率限制
文檔說明:http://flask-limiter.readthedocs.io/en/stable/
github地址:https://github.com/alisaifee/flask-limiter
參考:
1、https://www.helplib.com/GitHub/article_107460
2、https://www.jianshu.com/p/dd29529b06d9
3、
4、
