Это описано в документации по django-ratelimit
.Вы можете определить несколько @ratelimit
декораторов в одном представлении.
Кроме того, формат тарифа позволяет добавлять число к знаменателю :
Вы также можете указать количество единиц, например: X/Yu
, где Y
- количество единиц .Если u
опущено, предполагается, что это секунды.Итак, следующее эквивалентно, и все они означают «сто запросов в пять минут»:
100/5m
100/300s
100/300
Таким образом, вы можете определить эти ограничения следующим образом:
from ratelimit.decorators import ratelimit
@ratelimit(key='user'<b>, rate='20/10s'</b>)
@ratelimit(key='user'<b>, rate='100/10m'</b>)
@ratelimit(key='user'<b>, rate='1000/d'</b>)
def some_view(request):
pass
Для классана основе видов (например, ViewSet
), вы можете украсить его с помощью @method_decorator
, например:
django.utils.decorators import <b>method_decorator</b>
from ratelimit.decorators import ratelimit
<b>@method_decorator(</b>ratelimit(key='user', rate='20/10s'), name='dispatch'<b>)</b>
<b>@method_decorator(</b>ratelimit(key='user', rate='100/10m'), name='dispatch'<b>)</b>
<b>@method_decorator(</b>ratelimit(key='user', rate='1000/d'), name='dispatch'<b>)</b>
class MyViewSet(ViewSet):
# ...