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
"-//W3C//DTD HTML 3.2 Final//EN">
429 Too Many Requests

Too Many Requests

2 per 1 minute

$ curl localhost:5000/slow 24 $ curl localhost:5000/slow "-//W3C//DTD HTML 3.2 Final//EN"> 429 Too Many Requests

Too Many Requests

1 per 1 day

$ 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、

你可能感兴趣的:(flask-limiter限制单个IP访问的频率和次数)