Flask-limiter如何自定义存储在Redis中的键名
Flask-Limiter 调整Redis存储默认键名操作方法
方案1:修改全局键前缀(适用于统一添加命名空间场景)
这是最简单的调整方式,所有生成的Redis键都会自动加上你配置的前缀,操作如下:
- 初始化Limiter实例时传入
key_prefix参数即可完成配置
示例代码:
from flask import Flask from flask_limiter import Limiter from flask_limiter.util import get_remote_address app = Flask(__name__) limiter = Limiter( get_remote_address, app=app, # 配置Redis连接地址 storage_uri="redis://localhost:6379/0", # 自定义全局键前缀,可替换为你自己的项目标识 key_prefix="your_project_api_limit", )
效果说明:修改前默认键格式为flask-limiter/[请求标识]/[规则标识],修改后会变为your_project_api_limit/[请求标识]/[规则标识]
方案2:完全自定义键生成规则(适用于需要修改键整体结构场景)
如果不满足于仅加前缀,需要自定义键的拼接逻辑,可通过自定义key_func实现:
- 自行编写键生成函数,返回你需要的任意键格式
- 初始化Limiter时传入自定义的生成函数即可
示例代码:
from flask import request def custom_limit_key(): # 可根据业务需求自由拼接键内容,比如加入接口路径、用户ID等字段 request_ip = get_remote_address() api_path = request.path return f"custom_limit:{api_path}:{request_ip}" # 初始化时使用自定义的键生成函数 limiter = Limiter( key_func=custom_limit_key, app=app, storage_uri="redis://localhost:6379/0", )
注意:自定义键生成函数时请确保返回值的唯一性,避免不同限流规则出现键冲突,导致限流逻辑异常。
效果验证
修改完成后可连接Redis实例,执行keys *limit*命令查看生成的键是否符合预期。
内容的提问来源于stack exchange,提问作者Avid
相关产品推荐
相关产品推荐

