HTTP/1.1 420 Enhance Your Calm
exceptions.Throttled
, и основная часть представления не будет запущена.DEFAULT_THROTTLE_CLASSES
и DEFAULT_THROTTLE_RATES
. Например:DEFAULT_THROTTLE_RATES
, могут включать second
, minute
, hour
или day
в качестве периода дросселирования.APIView
.@api_view
с представлениями на основе функций.X-Forwarded-For
и переменная WSGI REMOTE_ADDR
используются для однозначной идентификации клиентских IP-адресов для регулирования. Если присутствует заголовок X-Forwarded-For
, то он будет использоваться, в противном случае будет использоваться значение переменной REMOTE_ADDR
из среды WSGI.NUM_PROXIES
. Этот параметр должен быть целым числом от нуля или более. Если установлено ненулевое значение, то IP-адрес клиента будет определяться как последний IP-адрес в заголовке X-Forwarded-For
после того, как любые IP-адреса прокси-сервера приложения были сначала исключены. Если установлено в ноль, тогда значение REMOTE_ADDR всегда будет использоваться как идентифицирующий IP-адрес.NUM_PROXIES
, то все клиенты, находящиеся за уникальным NAT'd шлюзом, будут рассматриваться как один клиент.X-Forwarded-For
и определение IP-адреса удаленного клиента, можно [найти здесь][identify-clients].LocMemCache
должно подходить для простых настроек. См. Кеш-документацию Django для получения более подробной информации.'default'
, вы можете сделать это, создав собственный класс дросселя и установив атрибут cache
. Например:'DEFAULT_THROTTLE_CLASSES'
или с помощью атрибута представления throttle_classes
.AnonRateThrottle
будет блокировать только неаутентифицированных пользователей. IP-адрес входящего запроса используется для генерации уникального ключа, который нужно ограничить.rate
в классе, которое может быть предоставлено путем переопределения AnonRateThrottle
и установки свойства.DEFAULT_THROTTLE_RATES['anon']
.AnonRateThrottle
подходит, если вы хотите ограничить скорость запросов из неизвестных источников.UserRateThrottle
будет ограничивать пользователей заданной скоростью запросов через API. Идентификатор пользователя используется для генерации уникального ключа, против которого можно действовать. Запросы, не прошедшие проверку подлинности, будут использовать IP-адрес входящего запроса для генерации уникального ключа, который будет подавляться.rate
в классе, которое может быть предоставлено путем переопределения UserRateThrottle
и установки свойства.DEFAULT_THROTTLE_RATES['user']
.UserRateThrottles
одновременно. Для этого переопределите UserRateThrottle
и установите уникальную «область видимости» для каждого класса.UserRateThrottle
подходит, если вам нужны простые глобальные ограничения скорости для каждого пользователя.ScopedRateThrottle
можно использовать для ограничения доступа к определенным частям API. Этот дроссель будет применяться только в том случае, если представление, к которому осуществляется доступ, включает свойство .throttle_scope
. Затем уникальный дроссельный ключ будет сформирован путем объединения "области видимости" запроса с уникальным идентификатором пользователя или IP-адресом.DEFAULT_THROTTLE_RATES
с использованием ключа из "области видимости" запроса.ContactListView
или ContactDetailView
будут ограничены в общей сложности 1000 запросами в день. Запросы пользователей к UploadView
будут ограничены 20 запросами в день.BaseThrottle
и реализуйте .allow_request(self, request, view)
. Метод должен возвращать True
, если запрос должен быть разрешен, и False
в противном случае..wait()
. Если реализовано, .wait()
должна возвращать рекомендуемое количество секунд ожидания перед попыткой следующего запроса или None
. Метод .wait()
будет вызываться только в том случае, если .allow_request()
ранее вернул False
..wait()
и запрос регулируется, то в ответ будет включен заголовок Retry-After
.