Руководство по квотам и ограничениям частоты запросов
В API FedEx используются три метода регулирования нагрузки: квоты, ограничения частоты запросов и пороговые значения.
Квоты
Квота — это максимальное число запросов API, которые разрешено отправлять ежедневно в рамках всей организации. Таким образом, потребители API должны учитывать общее число запросов API, отправляемых в рамках всех проектов организации. Запросы учитываются независимо от объема данных, полученных от API FedEx в ответ.
Пример. Для организации установлена квота 500 000 запросов API в день. За первые несколько часов организация отправила 500 000 запросов и исчерпала дневную квоту. До истечения суток на все запросы будет отправляться код ошибки «429 Too many requests — Daily transaction quota exceeded. Retry after 12:00AM GMT (429 Слишком много запросов — превышена дневная квота транзакций. Повторите попытку после 0:00 (GMT)».
Ограничение частоты запросов
Для каждого проекта установлено ограничение в 1400 транзакций в течение 10 секунд. Регулирование нагрузки применяется, если превышено число транзакций в течение нескольких 10-секундных периодов.
При достижении этого значения в течение первых нескольких секунд последующие транзакции блокируются до истечения десятисекундного перерыва. При этом вы получите сообщение об ошибке «429 Too many requests (Слишком много запросов)».
Если FedEx получит 1400 запросов в первые 2 секунды, в течение следующих 8 секунд все последующие транзакции будут блокироваться и вы получите сообщение об ошибке «429 Too many requests — We have received too many requests in a short duration. Please wait a while to try again (429 Слишком много запросов — получено слишком много запросов за короткий промежуток времени. Подождите и повторите попытку)».
По истечении 10 секунд ограничения нагрузки будут сняты и подсчет транзакций для следующих 10 секунд начнется заново.
Пороговые значения
Для того чтобы обеспечить устойчивость процесса авторизации API FedEx, пороговые значения применяются на уровне IP-адресов. Этот метод можно применять только в сочетании со службой создания маркеров OAuth. Используются пороговые значения двух типов:
- пакетное пороговое значение — 3 обращения в секунду, повторяющиеся в течение 5 секунд;
- среднее пороговое значение — 1 обращение в секунду, повторяющееся в течение 2 минут.
Если общедоступный IP-адрес нарушает одно из указанных ограничений, он получает блокировку на 10 минут: все запросы, отправляемые в течение этого 10-минутного периода, получат в ответ код «403 Forbidden» (доступ запрещен).
Если пользователь API продолжает превышать указанные ограничения в течение штрафного периода, блокировка будет продлена. Чтобы добиться завершения штрафного периода, пользователю API достаточно не нарушать установленные ограничения в течение следующих 10 минут.
Метод пороговых значений действует на уровне общедоступных IP-адресов. Если в рамках одного общедоступного IP-адреса установлено до 10 экземпляров виртуальных машин, при подсчете превышения порогового значения будут учитываться все обращения с этого IP-адреса.
Управление трафиком
Все три метода используются для управления трафиком на различных уровнях.
Квоты применяются на уровне организаций, т. е. учитывают общий трафик всех API в организации.
Ограничение частоты запросов применяется на уровне проектов, т. е. учитывается общий трафик всех API проекта.
Пороговые значения применяются на уровне IP-адресов.
Примечание. FedEx может настраивать все перечисленные методы регулирования нагрузки, чтобы избежать ненадлежащего использования, перегрузок и злоупотреблений. FedEx оставляет за собой право менять значения ограничений без предварительного уведомления с целью обеспечить всем потребителям API равноправный доступ к информационным ресурсам FedEx и их эффективное распределение .
Ответы на часто задаваемые вопросы
При подсчете превышения квоты учитываются все транзакции API организации из разных проектов?
Подсчет превышения квоты осуществляется на уровне организации. В рамках одной организации может осуществляться несколько проектов, для каждого из которых может использоваться несколько API. При подсчете превышения дневной квоты учитываются общая сумма запросов всех API любых проектов в рамках всей организации.
Если для превышения квоты и частоты запросов действует один и тот же код ошибки 429, как понять, какое именно ограничение было нарушено?
Чтобы выяснить, какое именно ограничение нарушено, прочитайте сообщение об ошибке.
НАРУШЕНИЕ | СООБЩЕНИЕ ОБ ОШИБКЕ |
---|---|
Квота | Too many requests – Daily transaction quota exceeded. Retry after 12:00AM GMT («Слишком много запросов — превышена дневная квота транзакций». Повторите попытку после 0:00 (GMT)). |
Ограничение частоты запросов | We have received too many requests in a short duration («Слишком много запросов — получено слишком много запросов за короткий промежуток времени»). Подождите и повторите попытку. |
Как устранить проблему с нарушением порогового значения?
Маркер OAuth действителен в течение часа. Рекомендуется использовать его в течение всего часа и отправить запрос на получение нового только по истечении срока действия старого.
Как выглядит превышение порогового значения?
Периоды наблюдения для пакетного и среднего порогового значения — 5 секунд и 2 минуты соответственно. Если со стороны IP-адреса происходит превышение допустимой частоты запросов в течение этих периодов, для него начинает действовать штрафной период.
Пример. Если в течение 2 секунд с одного IP-адреса отправлено 3 обращения, но после этого частота обращений падает, нарушения нет. Однако если с одного и того же IP-адреса отправляются по 3 обращения в секунду в течение 5 секунд (т. е. не менее 15 обращений в течение 5 секунд), это считается превышением пакетного порогового значения.