烧瓶应用的速率限制
Flask-Limiter的Python项目详细描述
快速启动
将速率限制器添加到烧瓶应用程序中。下面的示例使用默认值 存储的内存实现。
fromflaskimportFlaskfromflask_limiterimportLimiterfromflask_limiter.utilimportget_remote_addressapp=Flask(__name__)limiter=Limiter(app,key_func=get_remote_address,default_limits=["2 per minute","1 per second"],)@app.route("/slow")@limiter.limit("1 per day")defslow():return"24"@app.route("/fast")deffast():return"42"@app.route("/ping")@limiter.exemptdefping():return'PONG'app.run()
测试一下。当 slow 端点使用修饰的端点。 ping没有相关的速率限制 用它。
$ 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