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

如何在Django中实现API接口的全局请求次数限制?

Django 全局API节流实现方案(针对特定接口的全局调用次数限制)

需求背景

需要为特定api_view添加全局节流规则,限制该接口的总调用速率不超过X次/单位时间。默认的AnonRateThrottle或UserRateThrottle仅统计单个用户或IP的请求次数,无法满足全局统计需求——例如设置1次/分钟的速率后,只要有任意用户调用过该接口,接下来一分钟内所有用户都会被节流。

实现方案

通过自定义节流类的get_cache_key方法,让所有请求共用同一个缓存键,从而实现全局请求次数统计:

def get_cache_key(self, request, view):
    return request.method + request.get_full_path()

原理说明

该方法返回的缓存键由请求方法(如GET/POST)和接口完整路径拼接而成,无论请求发起者是谁,都会使用同一个键来累计请求次数,最终实现对该接口的全局速率限制。

内容的提问来源于stack exchange,提问作者Naftali Shtern

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:25:14