【发布时间】:2019-09-18 06:21:00
【问题描述】:
我一直在处理一项在烧瓶应用程序上应用节流的任务。对于节流,我一直在研究flask-limiter。我的应用程序的所有端点都是从 flask-restful 的资源扩展而来的。
class CompanyApi(Resource):
decorators = [limiter.limit(limit_value="10/minute")]
def get(self):
return "successful"
从flask-limiter doc,它清楚地提到动态限制可以使用decorator中的callable加载,用于基于方法的视图。
def get_limit():
company = request.args.get('company')
limit = Company.query.get(company)
#returns a limit string stored in db
return limit
@app.route("/check_company", methods=["GET"])
@limiter.limit(limit_value=get_limit)
def check_company():
return "success"
虽然对于可插入视图,它仅通过将装饰器设置为提供硬编码示例:
decorators = [limiter.limit(limit_value="10/minute")]
我已经尝试通过在装饰器中设置默认值,并且在处理请求时,我得到了从中检索限制的请求参数(公司) D b。然后覆盖限制器的限制值:
CompanyApi.decorators = [Limiter.limit(limit_value=get_limit)]
已更改但无效。我需要根据请求动态设置每个端点的限制。
如何为基于类的视图设置动态限制?
【问题讨论】:
标签: python python-3.x api flask throttling