Что означает аннотирование в ограничителе частоты запросов

Я использую Django Ratelimit, чтобы ограничить скорость вызова моих просмотров по IP.

Но я не знаю, что означает параметр block, задокументировано здесь.

Когда я устанавливаю его на True, я получаю 403, когда мой предел скорости превышен.

Но я не понимаю, что происходит, когда он установлен на False. В документе говорится:

block – False Whether to block the request instead of annotating.

Мой вопрос: что в данном контексте означает «аннотировать».


person user1383029    schedule 16.09.2015    source источник
comment
Насколько я вижу в примерах документации, есть was_limited = getattr(request, 'limited', False) пример. Я считаю, что установка значения False не приведет к блокированию запроса (в документации указано, что block=True вызывает исключение, чего не происходит, когда для параметра block установлено значение False, вы получаете только атрибут limited в объекте запроса.   -  person petkostas    schedule 16.09.2015


Ответы (1)


Как вы говорите, декоратор вызывает 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 и обработать его должным образом.

person Alasdair    schedule 16.09.2015