Planos de uso e limites de taxa na SP-API

Informações sobre planos de uso e como os limites de taxa são usados no SP-API.

A confiabilidade da API depende do dimensionamento de sua capacidade e recursos para atender às necessidades variáveis dos aplicativos ao longo do tempo. Isso significa tentar entender e prever o uso e, em seguida, gerenciar a frequência das solicitações para proteger contra a sobrecarga do serviço em horários de pico de uso.

Na Selling Partner API, as solicitações são limitadas por taxa usando o algoritmo de token bucket. O algoritmo é baseado na analogia de um bucket que contém tokens, onde cada token pode ser trocado para fazer uma solicitação. Os tokens são adicionados automaticamente ao bucket usando uma taxa definida por segundo até que o tamanho máximo do bucket seja atingido. O tamanho máximo também é chamado de taxa de intermitência. Cada solicitação subtrai um token do bucket. A limitação ocorre quando uma solicitação é feita para a qual nenhum token está disponível porque o bucket está vazio. Uma solicitação limitada resulta em uma resposta de erro.

Planos de uso

As operações da Selling Partner API têm planos de uso associados que especificam os limites de taxa. Você pode encontrá-los na documentação de referência da API. As definições do plano de uso são:

  • Rate - O número de solicitações por segundo que são adicionadas ao token bucket e, portanto, podem ser usadas para enviar solicitações sem sofrer limitação. Se você estiver fazendo chamadas continuamente por um longo período de tempo, ficar abaixo dessa taxa ajudará a evitar solicitações limitadas.
  • Burst – O tamanho máximo que o token bucket pode atingir. Isso também representa o número máximo de solicitações que você pode criar ao longo do tempo e enviar simultaneamente, supondo que o bucket de tokens esteja cheio.

Planos de uso padrão

A maioria das Selling Partner APIs são regidas por planos de uso padrão. Com um plano de uso padrão, os limites de taxa são estáticos para todos os chamadores e baseados em nossos padrões de chamadas esperados para cada operação de API. As taxas do plano de uso padrão para cada operação da API do parceiro de vendas são publicadas na referência da API dessa seção da API. Os chamadores de uma operação de API devem receber a taxa de transferência indicada pelas taxas padrão. Os parceiros de vendas cujas demandas de negócios exigem maior taxa de transferência podem ver valores de taxa e intermitência mais altos do que os padrões se tiverem recebido uma substituição pela Amazon.

Se você achar que as taxas padrão não são suficientes para seu caso de uso, solicite uma substituição abrindo um tíquete de suporte com nossa equipe de suporte ao desenvolvedor.

Planos de uso dinâmico

O recurso de plano de uso dinâmico está disponível apenas para a Selling Partner API para pedidos.

Um plano de uso dinâmico é aquele que é ajustado automaticamente para cada parceiro de vendas com base nas necessidades de negócios atuais e históricas para esse negócio. Os limites de taxa padrão publicados na documentação de referência da API podem ser usados para planejar seu aplicativo. No entanto, como o objetivo dos planos de uso dinâmico é dimensionar corretamente esses limites ao longo do tempo, as taxas podem mudar.

Uma variedade de métricas de negócios de parceiros de vendas influenciam os ajustes de taxas. Essas são apenas métricas de negócios e não incluem um número histórico de solicitações de API. As taxas não aumentarão dinamicamente porque um aplicativo envia solicitações de API com mais frequência.

Se você achar que as taxas dinâmicas ainda não são suficientes para seu caso de uso, solicite uma substituição abrindo um tíquete de suporte com nossa equipe de suporte ao desenvolvedor.

O cabeçalho de resposta x-amzn-RateLimit-Limit

Quando você envia uma solicitação para uma operação de Selling Partner API, os limites de taxa atuais para essa operação são retornados no cabeçalho de resposta x-amzn-RateLimit-Limit, com base no melhor esforço, apenas para códigos de status HTTP 20x, 400 e 404 . Em alguns casos, nossa tentativa de melhor esforço para solicitar, recuperar e fornecer o limite de taxa pode falhar. Isso pode ocorrer devido a um erro de rede aleatório, nossa tentativa de solicitação ser limitada ou outros problemas difíceis de prever. Quando isso acontecer, não falharemos em uma solicitação válida para uma operação de API de parceiro de vendas. Em vez disso, retornaremos a resposta sem o cabeçalho.

Isso significa que você não deve depender da presença do cabeçalho x-amzn-RateLimit-Limit em uma resposta. Em vez disso, verifique a presença do cabeçalho antes de tentar usar o valor limite de taxa.

O x-amzn-RateLimit-Limit nunca deve ser esperado na resposta a uma solicitação limitada, não autorizada ou não autenticada.

Perguntas frequentes

Gerais

Os limites de taxa para uma operação são muito baixos para meu caso de uso. O limite pode ser aumentado?

Buscamos limites no tamanho certo, com o objetivo de que padrões de chamadas eficientes, idealmente, nunca sejam estrangulados. Se você acredita que tem um caso de uso que não consideramos adequadamente, informe-nos abrindo um tíquete de suporte com nossa equipe de suporte ao desenvolvedor.

Como meu aplicativo deve lidar com uma resposta 429?

Um 429 é um código de status que pode ser repetido. Sinta-se à vontade para tentar novamente, mas solicitações repetidas e limitadas exigem uma estratégia de recuo. Consulte o cabeçalho de resposta x-amzn-RateLimit-Limit, quando disponível, para ver se os limites de taxa diferem de suas expectativas.

Como posso testar meu aplicativo em relação aos seus planos de uso?

Você pode testar o tratamento de erros 429 usando o sandbox da Selling Partner API. No entanto, você não pode testar limites de taxa com o sandbox. Isso ocorre porque, embora as operações em produção possam ter várias taxas, todas as operações de sandbox compartilham a mesma taxa. Você pode ver suas taxas de uso atribuídas no cabeçalho de resposta x-amzn-RateLimit-Limit para cada operação, quando disponível.

Meu aplicativo pode evitar completamente de ser limitado?

Não. Qualquer número de fatores fora de seu controle pode resultar em um pequeno número de 429s transitórios. Isso é esperado e deve ser considerado no código do aplicativo.

O que devo fazer se meu aplicativo for constantemente limitado?

Se seu aplicativo for constantemente limitado, isso pode significar que seus padrões de chamada podem ser otimizados ainda mais. Por exemplo:

  1. Ligue com menos frequência de acordo com seus limites de taxa.

  2. Confie em notificações push em vez de mecanismos de votação.

  3. Use APIs em lote quando disponíveis ou tente fazer mais com menos chamadas. Por exemplo, com as APIs de feeds e relatórios , você pode enviar ou recuperar muitas informações (ou seja, lotes de informações) usando um número relativamente pequeno de chamadas. Geralmente, examine seus padrões de chamada em relação às operações em uma API para ver se você pode fazer o mesmo trabalho com menos chamadas.

Minha inscrição será limitada com mais frequência à medida que obtiver mais autorizações?

Não. Todos os planos de uso são específicos para pares de parceiros de vendas de aplicativos, para que sua taxa de transferência cresça naturalmente com seus clientes.

Os limites das taxas serão alterados?

Poderíamos aumentar os limites de taxa a qualquer momento. Se diminuirmos os limites de taxa publicados na documentação de referência da API, comunicaremos a alteração com antecedência para que você tenha tempo de atualizar e testar seus aplicativos antes que a alteração seja lançada.

Os limites de taxa para planos de uso dinâmico (discutidos abaixo) ajustam-se automaticamente para cima ou para baixo, dependendo do contexto de negócios.

Planos de uso dinâmico

Meus limites de taxa aumentarão se meu aplicativo for constantemente limitado?

As taxas são baseadas nas métricas de negócios de um parceiro de vendas. Se um aplicativo estiver sendo limitado de forma consistente, provavelmente significa que seus padrões de chamada não estão alinhados com os limites de taxa atribuídos a esse parceiro de vendas. Consulte O que devo fazer se meu aplicativo for constantemente limitado? Consulte também Os limites de taxa para uma operação são muito baixos para o meu caso de uso. O limite pode ser aumentado?

Qual é o objetivo geral dos planos de uso dinâmico?

Historicamente, observamos que planos de uso homogêneos são superdimensionados para algumas situações e, pior, subdimensionados para outras. O objetivo dos planos de uso dinâmico é aproveitar o contexto de negócios conhecido de uma determinada chamada para estabelecer os limites certos para qualquer situação.

Quais fatores influenciam os planos de uso dinâmico?

Em geral, os limites de taxa são moldados pelo tipo, tamanho e comportamento do negócio do parceiro de vendas.

Com que frequência os limites associados a um determinado plano de uso serão alterados?

Nosso objetivo é evitar mudanças frequentes e disruptivas nos limites. Geralmente, os limites serão alterados assim que detectarmos alterações significativas nas métricas de negócios em uma conta de parceiro de vendas.

Como devo codificar meu aplicativo para respeitar os limites dinâmicos?

Aqui estão algumas sugestões para um bom comportamento do aplicativo em relação aos limites de taxa dinâmica.

  1. Leia o cabeçalho x-amzn-RateLimit-Limit, quando disponível.

  2. Não codifique temporizadores.

  3. Codifique naturalmente contra eventos em vez de executar em um loop. Se você fizer isso, não precisará de um cronômetro. No exemplo de um redefinidor de preços, atualize os preços em resposta às notificações de preços em vez de a cada n segundos.