Flask Limiter 错误:TypeError: Limiter.__init__() got multiple values for argument 'key_func'

问题描述 投票:0回答:1

我正在尝试使用 Flask 的速率限制库来基于秒对 api 进行速率限制。

所以我使用了这种完全相同的格式来限制对 Apahce 服务器上 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)

我再次在另一台服务器上运行了完全相同的代码,但现在它给出了这个错误:

    limiter = Limiter(app, "5/second", key_func=lambda: request.args.get('token') if 'token' in request.args else get_remote_address)

TypeError: Limiter.__init__() got multiple values for argument 'key_func'

任何帮助都会很棒。我在 python 中使用 Flask-Limiter 并在 NGINX 的 gunicorn 服务器上运行 gevent。谢谢。

python api flask rate-limiting
1个回答
0
投票

您的 Limiter 类实例化不正确。以下是正确的-

limiter = Limiter(get_remote_address, app=app, default_limits=["每天 200", "每小时 50"])

© www.soinside.com 2019 - 2024. All rights reserved.