Flask Limiter 错误:TypeError:Limiter.__init__() 获得参数“key_func”的多个值

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"])