Jus*_*lia 2 python rate-limiting flask
我正在尝试使用 Flask 的速率限制库来根据秒数限制 API 的速率。
因此,我使用了完全相同的格式来限制对 Apache 服务器上的 API 的请求。不过我现在使用 NGINX。我不认为这有什么区别,但是当我运行这段代码时:
import api
app = Flask(__name__, instance_relative_config=True)
limiter = Limiter(app, default_limits=["5/second"], key_func=lambda: get_remote_address)
limiter.limit("5/second", key_func=lambda: request.args.get('token') if 'token' in request.args else get_remote_address)(api.bp)
app.register_blueprint(api.bp)
Run Code Online (Sandbox Code Playgroud)
我再次在另一台服务器上运行了完全相同的代码,但现在它给出了此错误:
limiter = Limiter(app, "5/秒", key_func=lambda:
request.args.get('token') if 'token' in request.args else get_remote_address)类型错误:Limiter.__init__() 获得参数“key_func”的多个值
任何帮助都会很棒。我在 python 中使用 Flask-Limiter 并在 NGINX 的 Gunicorn 服务器上运行 gevent。
小智 6
您的 Limiter 类实例化不正确。下面是正确的——
limiter = Limiter(get_remote_address, app=app, default_limits=["200 per day", "50 per hour"])