Django restframework 节流

django restframework节流即限制访问频率,节流主要有两种,一种是对未登陆用户的限流,一种对已经登陆用户的限流。对于未登陆用户的限制,如果客户更换ip,实际上是没法进行真正的限流。

当请求进来后,走dispatch方法,在dispatch方法中有个initial,内部执行check_throttles方法,它会通过get_throttles方法先获取所有节流的类,关返回实例化对象的列表。当我们使用UserRateThrottles,或者AnonRateThrottles,这两个方法都重写了ge_cache_key方法,如果没有认证直接返回None,谁失败返回False。如果没有被限制就通过get_ident获取ip,all_request访问记录,然后更新访问记录列表。

它的流程,调用的类,方法如下图:

 

通常情况下,我们只需要在配置中指定全局配置即可:

{
"DEFAULT_THROTTLE_CLASSES":"UserRateThrottle",
}

而在不需要限流的视图类中,将Throttle_classes=[]即可放行限制。

上一篇:Django restframework 权限

下一篇:Django mdeditor test