我有几个测试用户用于对我的Django + DRF应用程序运行集成测试。如何仅对这些用户禁用限制?
看起来我可以覆盖DRF的allow_request()
方法(参见https://github.com/encode/django-rest-framework/blob/99 e8 b4033 efa 44930 ace 40 fb 48 a4 d 7 bcd 224 f9 fb/rest_framework/throttling.py#L109):
from rest_framework.throttling import SimpleRateThrottle
class CustomSimpleRateThrottle(SimpleRateThrottle):
def allow_request(self, request, view):
if request.user in {<user1>, <user2>}:
return True
return super().allow_request(request, view)
但是我不想选择这种方法,因为它要求我在所有的节流类中使用这个基本方法(例如:UserRateThrottle
、AnonRateThrottle
等)。
有没有其他方法可以做到这一点?
1条答案
按热度按时间gr8qqesn1#
考虑到节流是作为检查缓存的请求时间戳列表来实现的,该列表根据每个用户和每个作用域的唯一字符串进行键控,我认为您可以使用一个自定义中间件来清除与这些用户匹配该高速缓存键的值。在传入请求上运行此函数的东西(假设
allowed_users
是{<user_1>, <user_2>}
的可迭代对象):或者如果你知道你已经在默认的“user”作用域之上定义了更多的作用域,这些作用域为经过身份验证的用户处理节流: