You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 04:06:03