Планы использования и ограничения по тарифам в API партнера по продажам
Надежность API зависит от определения ваших возможностей и ресурсов для удовлетворения меняющихся потребностей приложений с течением времени. Это означает попытку понять и спрогнозировать использование, а затем управлять частотой запросов для защиты от перегрузки службы в пиковые периоды использования.
В API партнера по продажам скорость запросов ограничена с использованием алгоритма корзины токенов (открывается новое окно). Алгоритм основан на аналогии с корзиной, содержащей токены, где каждый токен может быть обменен для выполнения запроса. Токены автоматически добавляются в корзину с заданной скоростью в секунду до тех пор, пока не будет достигнут максимальный размер корзины. Максимальный размер также называется скоростью серийной съемки. Каждый запрос вычитает токен из корзины. Регулирование происходит, когда выполняется запрос, для которого токен недоступен, поскольку корзина пуста. Ограниченный запрос приводит к ответу с ошибкой.
Планы использования
Операции API партнеров по продажам имеют связанные планы использования, в которых указаны ограничения скорости. Вы можете найти их в справочной документации API. Определения плана использования являются:
- Скорость - количество запросов в секунду, которые добавляются в корзину токенов и, таким образом, могут использоваться для отправки запросов без ограничения. Если вы совершаете звонки непрерывно в течение длительного периода времени, оставаясь ниже этой скорости, вы сможете избежать ограничения запросов.
- Пакет – максимальный размер, которого может достичь корзина токенов. Это также представляет максимальное количество запросов, которые вы можете создавать с течением времени, а затем отправлять одновременно, предполагая, что корзина токенов заполнена.
Стандартные Планы Использования
Большинство API-интерфейсов партнеров по продажам регулируются стандартными планами использования. При стандартном плане использования ограничения скорости являются статическими для всех абонентов и основаны на наших ожидаемых шаблонах вызовов для каждой операции API. Тарифы плана использования по умолчанию для каждой операции API партнера по продажам опубликованы в справочнике API для этого раздела API. Вызывающие операции API должны получать пропускную способность, указанную в тарифах по умолчанию. Партнеры по продажам, бизнес-требования которых требуют более высокой пропускной способности, могут видеть более высокие значения скорости и пакетов, чем значения по умолчанию, если Amazon предоставил им переопределение.
Если вы обнаружите, что тарифы по умолчанию недостаточны для вашего варианта использования, подайте заявку на отмену, обратившись в службу поддержки в нашу службу поддержки разработчиков.
Динамические Планы использования
Функция динамического плана использования доступна только для API-интерфейса партнера по продажам для заказов.
Динамический план использования - это план, который автоматически корректируется для каждого торгового партнера на основе текущих и исторических бизнес-потребностей этого бизнеса. Ограничения скорости по умолчанию, опубликованные в справочной документации API, можно использовать для планирования вашего приложения. Однако, поскольку целью динамических планов использования является правильный размер этих ограничений с течением времени, тарифы могут меняться.
Различные бизнес-показатели партнеров по продажам влияют на корректировку ставок. Это только бизнес-показатели и не включают в себя историческое количество запросов API. Тарифы не будут динамически увеличиваться, поскольку приложение отправляет запросы API чаще.
Если вы обнаружите, что динамические тарифы по-прежнему недостаточны для вашего варианта использования, подайте заявку на отмену, обратившись в службу поддержки в нашу службу поддержки разработчиков.
Заголовок ответа x-amzn-RateLimit-Limit
Когда вы отправляете запрос на операцию API партнера по продажам, текущие ограничения скорости для этой операции возвращаются в заголовке ответа x-amzn-RateLimit-Limit на основе наилучших усилий только для кодов состояния HTTP 20x, 400 и 404. В некоторых случаях наша попытка запросить, получить и предоставить ограничение скорости, приложив все усилия, сама по себе может завершиться неудачей. Это может быть связано со случайной сетевой ошибкой, ограничением нашей попытки запроса или другими труднопрогнозируемыми проблемами. Когда это произойдет, мы не будем отклонять действительный в противном случае запрос к операции API Партнера по продажам. Вместо этого мы вернем ответ без заголовка.
Это означает, что вы не должны зависеть от наличия заголовка x-amzn-RateLimit-Limit в ответе. Вместо этого проверьте наличие заголовка, прежде чем пытаться использовать предельное значение скорости.
x-amzn-RateLimit-Limit никогда не следует ожидать в ответе на ограниченный, несанкционированный или неаутентифицированный запрос.
Часто Задаваемые Вопросы
Общие сведения
Ограничения скорости для одной операции слишком низки для моего варианта использования. Можно ли увеличить лимит?
Мы стремимся к ограничениям правильного размера, с целью, чтобы эффективные шаблоны вызовов, в идеале, никогда не ограничивались. Если вы считаете, что у вас есть вариант использования, который мы не учли должным образом, сообщите нам об этом, обратившись в службу поддержки в нашу службу поддержки разработчиков.
Как мое приложение должно обрабатывать ответ 429?
429 - это код состояния, который можно повторить. Не стесняйтесь попробовать еще раз, но повторные ограниченные запросы требуют стратегии отступления. Пожалуйста, обратитесь к заголовку ответа x-amzn-RateLimit-Limit, если он доступен, чтобы узнать, отличаются ли ограничения скорости от ваших ожиданий.
Как я могу протестировать свое приложение в отношении его планов использования?
Вы можете протестировать обработку ошибок 429 с помощью песочницы API Selling Partner. Однако вы не можете протестировать ограничения скорости с помощью песочницы. Это связано с тем, что, хотя производственные операции могут иметь разную скорость, все операции изолированной среды имеют одинаковую скорость. Вы можете увидеть назначенные вам показатели использования в заголовке ответа x-amzn-RateLimit-Limit для каждой операции, если это доступно.
Может ли мое приложение полностью избежать регулирования?
Нет. Любое количество факторов, не зависящих от вас, может привести к небольшому количеству переходных 429-х секунд. Это ожидаемо и должно быть учтено в коде вашего приложения.
Что мне делать, если мое приложение постоянно блокируется?
Если ваше приложение постоянно регулируется, это может означать, что ваши шаблоны вызовов могут быть дополнительно оптимизированы. Например:
- Звоните реже в соответствии с вашими тарифными ограничениями.
- Полагайтесь на push-уведомления, а не на механизмы опроса.
- Используйте пакетные API, где это возможно, или иным образом старайтесь делать больше с меньшим количеством вызовов. Например, с помощью API-интерфейсов Feeds (открывает новое окно) и Reports (открывает новое окно) вы можете отправлять или извлекать много информации (т.е. пакеты информации), используя относительно небольшое количество вызовов. Как правило, изучайте свои шаблоны вызовов в сравнении с операциями в API, чтобы увидеть, сможете ли вы выполнить ту же работу за меньшее количество вызовов.
Будет ли мое приложение регулироваться чаще по мере того, как я получу больше разрешений?
Нет. Все планы использования специфичны для пар партнеров по продаже приложений, так что ваша пропускная способность естественным образом растет вместе с вашими клиентами.
Изменятся ли лимиты ставок?
Мы можем повысить лимиты ставок в любое время. Если мы когда-либо снизим ограничения скорости, указанные в справочной документации API, мы сообщим об изменении заранее, чтобы дать вам время обновить и протестировать ваши приложения до того, как изменения вступят в силу.
Ограничения по тарифам для динамических планов использования (обсуждаются ниже) автоматически настраиваются в большую или меньшую сторону в зависимости от бизнес-контекста.
Динамические Планы использования
Увеличатся ли мои ограничения скорости, если мое приложение будет постоянно регулироваться?
Ставки основаны на бизнес-показателях партнера по продажам. Если приложение постоянно регулируется, это, вероятно, означает, что ваши шаблоны звонков не соответствуют ограничениям скорости, назначенным этому партнеру по продажам. Посмотрите, что мне делать, если мое приложение постоянно блокируется? См. Также Ограничения скорости для одной операции слишком низки для моего варианта использования. Можно ли увеличить лимит?.
Какова общая цель планов динамического использования?
Исторически сложилось так, что мы наблюдали, что однородные планы использования являются чрезмерно большими для одних ситуаций и, что еще хуже, недостаточными для других. Цель динамических планов использования состоит в том, чтобы использовать известный бизнес-контекст данного вызова, чтобы установить правильные ограничения для любой ситуации.
Какие факторы влияют на планы динамического использования?
В целом, предельные ставки определяются типом, размером и поведением бизнеса партнера по продажам.
Как часто будут меняться ограничения, связанные с данным планом использования?
Мы стремимся предотвратить частые, разрушительные изменения лимитов. Как правило, лимиты будут изменены, как только мы обнаружим существенные изменения в бизнес-показателях в аккаунте Партнера по продажам.
Как я должен кодировать свое приложение, чтобы соблюдать динамические ограничения?
Вот несколько советов по правильному поведению приложения в отношении динамических ограничений скорости.
- Прочитайте заголовок x-amzn-RateLimit-Limit, если он доступен.
- Не кодируйте таймеры жестко.
- Код естественным образом реагирует на события, а не выполняется в цикле. Если вы сделаете это, вам вообще не понадобится таймер. В примере с переоценивателем обновляйте цены в ответ на уведомления о ценах, а не каждые n секунд.