flask-limiter限制單個IP訪問的頻率和次數


  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、


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM