我使用Django Ratelimit来限制IP可以调用我的视图的速率。
但我不知道参数block
的含义,documented here。
当我将其设置为True时,超过我的速率限制时会得到403.
但我不明白当它设置为False时会发生什么。医生说:
block – False Whether to block the request instead of annotating.
我的问题是:"注释"在这种情况下意味着。
答案 0 :(得分:2)
正如您所说,装饰者在Ratelimited
时会引发block=True
例外。这将向用户返回403 Permission Denied响应。
如果block=False
,则不会引发异常。但是,已在请求对象上设置了布尔limited
。在您看来,您可以查看此注释'使用getattr
,然后随意处理。
was_limited = getattr(request, 'limited', False):
if was_limited:
return HttpResponse("You have been rate limited")
因此,如果您使用block=False
,则由您自行检查值request.limited
,并正确处理。