zoukankan      html  css  js  c++  java
  • Flask-Limiter 接口访问频次限制

    flask-limiter - 第三方控频插件

    官方文档:FlaskLIMITER

    flask-limiter 是一个对客户端的访问速率进行限制的flask扩展.可以自定义一些访问的(速度)限制条件来把那些触发限制的请求拒之门外.一般常用来进行对爬虫的限制.
    下面就常见的用法,举了一些例子.更多的例子,请自己查看原始文档.

    FBV实现方式

    # -*- coding: utf-8 -*-
    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,
        # 每天限制多少次,每小时限制多少次,没分钟限制多少次
        default_limits=["20 per day", "2 per hour", "1 per minute"],
        # 存储位置可以选择 redis 来存储
        storage_uri="redis://:123456@127.0.0.1:6379/0"
    )
    
    
    # 地址 slow 每分钟只能访问一次
    @app.route("/slow")
    @limiter.limit("1 per minute")
    def slow():
        return "24"
    
    
    # 地址 fast 走全局的配置 default_limits
    @app.route("/fast")
    def fast():
        return "42"
    
    
    # 地址 ping 通过
    @app.route("/ping")
    @limiter.exempt
    def ping():
        return "PONG"
    
    
    if __name__ == '__main__':
        app.run(debug=True, host='0.0.0.0', port=5000)

    注:在使用 redis 作为存储位置的时候,我们需要值得注意的是,要想让limiter缓存在redis中必须安装相应的支持库,Flask-Limiter并不会自动安装,所以需要我们手动 pip install flask-redis 。

  • 相关阅读:
    ApplicationContext.xml修改
    springmvc.xml约束
    log4j.properties
    SqlMapConfig.xml配置文件
    Mybatis注解式开发坐标
    字符串函数
    vim基础快捷键
    format的使用
    lambda匿名函数
    字典的基础使用
  • 原文地址:https://www.cnblogs.com/shangwei/p/14339511.html
Copyright © 2011-2022 走看看