Войти

Квотирование

Для обеспечения максимальной доступности API сервисов предусмотрен ряд ограничений на интенсивность запросов со стороны пользователей в секунду/минуту/час:

  • Ограничение на количество запросов от одного IP:
    • 100 запросов в секунду
    • 1000 запросов в минуту
  • Ограничение на количество запросов от одного авторизованного пользователя (API User ID):
    • 10 запросов в секунду
    • 100 запросов в минуту
    • 1000 запросов в час
  • Ограничение на количество некорректных запросов от одного авторизованного пользователя:
    • 60 запросов в минуту

    Если в запросе зафиксированы ошибки, то доступ ко всему API будет ограничен до конца временного интервала по выделенной квоте, даже если ошибки исправлены.

  • Ограничение на количество запросов от одного неавторизованного пользователя:
    • 10 запросов в секунду

    Неавторизованный пользователь — это пользователь, который при обращении к API не передал подпись или подпись некорректна. В этом случае MyTracker не может идентифицировать пользователя, и он будет считаться неавторизованным.

Для некоторых разделов API могут быть установлены дополнительные виды ограничений и максимальные значения лимитов.

Квоты на количество запросов могут быть изменены в будущем. Актуальные данные будут отображаться в данной статье.

Проверка квот

Вы можете получить информацию о своих квотах, отправив GET запрос, в котором quotas возвращает информацию о количестве квот.

https://tracker.my.com/api/open/user/v1/quotas/get.json

Превышение квот

Проверка достижения лимита квот происходит по следующему алгоритму — сначала проверяются квоты по IP, потом квоты по авторизованному пользователю, а затем квоты по ошибкам в запросе. Количество запросов проверяется за каждый временной интервал по каждому виду ограничений. Если лимит по квотам исчерпан, то доступ к API блокируется до конца соответствующего временного интервала.

Например, если авторизованный пользователь совершил 1000 запросов менее чем за час, то возможность отправки следующих запросов будет заблокирована до конца этого часа, так как выделенная квота исчерпана.

После того как квота исчерпана, API начинает возвращать ответ с HTTP-статусом 429 (Too Many Requests). В качестве информации будет выдана одна из групп проверяемых лимитов со следующими данными:

  • название квоты;
  • текущее значение использования квоты;
  • максимальное значение использования квоты;
  • timestamp сброса текущего значения использования квоты;
  • оставшееся время до сброса текущего значения использования квоты (в секундах);
  • превышена ли данная квота.

В примере показан ответ на запрос, в котором превышена минутная квота:

{
  "code": 429,
  "message": "Too Many Requests",
  "data": {
    "error": {
      "info": {
        "quotas": [
          {
            "name": "RequestsByUserPerSecond",
            "count": 3,
            "limit": 10,
            "resetTime": 1500000291,
            "resetInSecond": 1,
            "exceeded": false
          },
          {
            "name": "RequestsByUserPerMinute",
            "count": 127,
            "limit": 100,
            "resetTime": 1500000320,
            "resetInSecond": 30,
            "exceeded": true
          },
          {
            "name": "RequestsByUserPerHour",
            "count": 100,
            "limit": 1000,
            "resetTime": 1500000800,
            "resetInSecond": 510,
            "exceeded": false
          }
        ]
      }
    }
  }
}

Обратите внимание, что в ответе может быть показано более одной превышенной квоты, а также квоты, лимиты которых еще не превышены. Данная функциональность, при необходимости, поможет принять более правильное решение, через какой промежуток времени и с какой интенсивностью возобновить взаимодействие с API.

Увеличение квот

Вы можете запросить увеличение квот для IP или авторизованного пользователя (API User ID) в службе поддержки MyTracker.

Была ли эта статья полезна?