Planos de uso e limites de taxa
Saiba mais sobre os planos de uso e como os limites de taxa são usados na SP-API.
A confiabilidade da API depende do dimensionamento de sua capacidade e recursos para atender às necessidades variáveis de seu aplicativo ao longo do tempo. Por esse motivo, a API do parceiro de vendas (SP-API) define planos de uso para controlar o número de solicitações que você pode fazer a uma operação dentro de um determinado período.
Os planos de uso dependem de vários fatores, que podem incluir a conta do parceiro de vendas, o aplicativo que chama a SP-API em nome da conta do parceiro de vendas, a loja e assim por diante.
Este documento descreve o algoritmo de limitação de taxa do SP-API, os fatores que determinam os planos de uso, como encontrar seu plano de uso e as perguntas frequentes sobre como trabalhar dentro dos limites de taxa.
For guidance on how to optimize your application workloads to leverage the rate limits for each SP-API operation efficiently, refer to Optimize rate limits for application workloads.
Terminologia
Os termos a seguir estão relacionados à limitação de taxa na SP-API:
- Limite de tarifa: O número máximo de solicitações que a SP-API permite que você faça para uma operação específica por segundo. Para evitar a limitação, fique abaixo desse limite.
- Limite de explosão: O número máximo de solicitações para uma operação específica que você pode criar ao longo do tempo e enviar simultaneamente.
- Usage plan: The combination of rate limit and burst limit that applies to a specific operation. For more information, refer to Usage plan types and Factors that determine usage plans.
- Token bucket algorithm: The algorithm that the SP-API uses to rate-limit requests, based on an analogy of exchanging tokens for API requests. For a walkthrough of the algorithm, refer to Rate-limiting algorithm.
- Limitação: O caso em que a SP-API rejeita temporariamente suas solicitações quando você excede seu limite de taxa. Uma solicitação limitada resulta em uma resposta de erro HTTP 429. Você pode tentar novamente as solicitações limitadas mais tarde.
- Conta: A conta do parceiro de vendas em nome da qual o aplicativo do desenvolvedor chama a SP-API. Você especifica a conta fornecendo um
sellerId
quando você chama determinadas operações da SP-API. - Aplicação: O aplicativo para desenvolvedores que chama a SP-API em nome de um parceiro de vendas. No console do desenvolvedor do parceiro de vendas, você pode encontrar o ID do aplicativo após o nome do aplicativo.
- Grantless operations: Operations that don't require a
sellerId
as part of the request. For grantless operations, the selling partner isn't a factor in the usage plan for that operation. For a list of grantless operations, refer to Grantless Operations.
Algoritmo de limitação de taxa
A SP-API usa o algoritmo de bucket do token para limitar a taxa de solicitações à API. O algoritmo baseia-se na analogia de um bucket que contém tokens, em que você pode trocar cada token por uma solicitação à API.
Nessa analogia, a SP-API adiciona automaticamente tokens ao seu bucket a 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.
Quando você chama a SP-API, ela recupera seu plano de uso (limite de taxa e limite de intermitência) para essa operação com base no token de acesso que identifica a identidade do chamador no cabeçalho da solicitação. Cada solicitação à SP-API consome um token do bucket. A limitação ocorre quando uma solicitação é feita, mas não há tokens disponíveis, pois o bucket está vazio. Nesse caso, a solicitação limitada resulta em uma resposta de erro.
A ilustração a seguir mostra como a limitação de taxa funciona com base no algoritmo de bucket de tokens e nos critérios de alocação do bucket. O exemplo usa uma operação com um limite de taxa de um e um limite de intermitência de dois.
- O bucket está inicialmente cheio e contém dois tokens (limite de intermitência). Às 01:00:100, um aplicativo chama uma operação da SP-API em nome de um parceiro de vendas que opera no site da UE. A solicitação foi bem-sucedida. O bucket agora contém um único token porque a solicitação esgotou um token do bucket.
- Depois de 100 milissegundos, às 01:00:200, o mesmo aplicativo chama a mesma operação em nome do mesmo parceiro de vendas na mesma região. A solicitação é bem-sucedida e usa o último token no bucket. O balde agora está vazio.
- Depois de mais 100 milissegundos, às 01:00:300, o mesmo aplicativo chama a mesma operação em nome do mesmo parceiro de vendas na mesma região. Dessa vez, devido aos limites esgotados (bucket vazio), a solicitação é limitada.
- Um segundo após o início deste exemplo, às 01:01:000, a SP-API coloca um token no bucket, porque o limite de taxa é de um token por segundo. Agora, o aplicativo pode chamar a operação com êxito sem ser limitado.
- Depois de mais um segundo, às 01:02:00, a SP-API adiciona outro token ao bucket.
- Às 01:03:00, a SP-API não adiciona outro token ao bucket porque o bucket atingiu seu tamanho máximo (limite de intermitência).
Os fatores que determinam os limites de taxa e de rajada significam que, em alguns casos, há um bucket de token separado. Neste exemplo, dois tokens estão disponíveis em 01:00:200 nos seguintes casos:
- O mesmo aplicativo aciona a mesma operação, mas em nome de um parceiro de vendas diferente.
- O mesmo aplicativo chama a mesma operação em nome do mesmo parceiro de vendas, mas usando as credenciais de uma conta regional diferente.
- Um aplicativo diferente aciona a mesma operação em nome do mesmo parceiro de vendas.
A ilustração a seguir mostra esses cenários alternativos.
Fatores que determinam os planos de uso
Os limites de taxa e intermitência para cada operação da SP-API dependem de vários fatores, e vários planos de uso podem ser aplicados a uma operação individual. A taxa de solicitações é limitada por qualquer limite que você atingir primeiro.
A SP-API se baseia nos seguintes fatores para atribuir planos de uso:
- Operação da API: Cada operação da SP-API tem sua própria taxa padrão e limites de intermitência. Você pode encontrar esses limites ou um link para a documentação que lista os limites na documentação de referência da API para cada operação.
- Parceiro de vendas (conta) e par de aplicativos: Os limites de taxa da maioria das operações são por parceiro de vendas e par de aplicativos. O aplicativo chama a SP-API em nome do parceiro de vendas. As operações sem subsídios são exceções a essa regra. Os aplicativos podem solicitar operações sem subsídios sem autorização de um parceiro de vendas. Para operações sem subsídios, os planos de uso são definidos com base nos outros critérios desta seção.
- Regiões e mercados: Os planos de uso estão implicitamente vinculados aos grupos de mercado nos quais um parceiro de vendas opera e autorizou um aplicativo a chamar a SP-API em seu nome. A natureza implícita desse fator limitador de taxa se resume às diferentes contas de parceiros de vendas específicas do mercado. Diferentes contas de parceiros de vendas específicas do mercado têm IDs de vendedor diferentes.
Tipos de planos de uso
Each SP-API operation is associated with a usage plan. A usage plan specifies a rate limit and a burst limit. For details about how to find your usage plan, refer to How to find your usage plan. There are two types of usage plans: standard and dynamic.
-
Planos de uso padrão: A maioria das SP-APIs é regida por planos de uso padrão. Com um plano de uso padrão, os limites de taxa têm valores estáticos para todos os chamadores com base nos padrões de chamadas esperados para cada operação. Você pode encontrar o plano de uso ou um link para a documentação que lista o plano de uso na documentação de referência da API para cada operação.
-
Planos de uso dinâmico: Algumas SP-APIs e operações têm planos de uso dinâmicos. Um plano de uso dinâmico é aquele que é ajustado automaticamente para cada parceiro de vendas com base nas necessidades comerciais atuais e históricas desse negócio. 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 do parceiro de vendas influencia os ajustes nas taxas. Essas métricas são apenas métricas comerciais e não incluem um número histórico de solicitações de API. As taxas não aumentam dinamicamente porque um aplicativo faz solicitações de API com mais frequência.
Os planos de uso dinâmico se aplicam somente às seguintes operações e APIs de SP.
API do parceiro de vendas Operations Pedidos V0 Todas as operações Preços do produto v2022-05-01 getFeaturedOfferExpectedPriceBatch
Como encontrar seu plano de uso
Você pode encontrar seu plano de uso (limites de taxa e de intermitência) das seguintes formas:
-
Documentação da SP-API: Você pode encontrar esses limites ou um link para a documentação que lista os limites na documentação de referência da API para cada operação.
-
Cabeçalho de resposta: Quando você chama uma operação SP-API, o
x-amzn-RateLimit-Limit
o cabeçalho de resposta, se disponível, especifica os limites de taxa da operação por par conta-aplicativo. No entanto, você não deve depender da presença desse cabeçalho, pelos seguintes motivos:- Em alguns casos, apesar da melhor tentativa, a SP-API não consegue recuperar os limites de taxa. Nesse caso, a SP-API não falha em uma chamada válida para a operação. Em vez disso, a SP-API retorna a resposta sem a
x-amzn-RateLimit-Limit
cabeçalho. - O
x-amzn-RateLimit-Limit
o cabeçalho de resposta é para os códigos de status HTTP 20x, 400 e 404. Solicitações não autorizadas ou não autenticadas não incluem esse cabeçalho. - O
x-amzn-RateLimit-Limit
o cabeçalho não inclui outros limites de taxa do plano de uso.
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 da taxa. - Em alguns casos, apesar da melhor tentativa, a SP-API não consegue recuperar os limites de taxa. Nesse caso, a SP-API não falha em uma chamada válida para a operação. Em vez disso, a SP-API retorna a resposta sem a
Perguntas frequentes
Os limites de taxa para uma operação são muito baixos para meu caso de uso. O limite pode ser aumentado?
We aim for right-sized limits, with the goal that efficient call patterns should, ideally, never be throttled. If your application is consistently throttled, it might mean that you can further optimize your call patterns. For more information, refer to What should I do if my application is consistently throttled. If you find that default rates aren't sufficient, refer to Strategies to optimize rate limits for your application workloads.
Como meu aplicativo deve lidar com uma resposta 429?
A 429 is a retry-able status code. You can try again, but repeated throttled requests require a back-off strategy. Use the x-amzn-RateLimit-Limit
response header, when available, to determine if the rate limits differ from your expectations. For details about when this header is available, refer to How to find your usage plan.
Como posso testar meu aplicativo em relação aos planos de uso?
You can test 429 error handling by using the Selling Partner API sandbox. However, you can't test rate limits with the sandbox because while operations in production can have various rates, all sandbox operations share the same rate. You can find your assigned usage rates in the x-amzn-RateLimit-Limit
response header for each operation, when available. For details about when this header is available, refer to How to find your usage plan.
Meu aplicativo pode evitar completamente a limitação?
Não. Qualquer número de fatores fora de seu controle pode resultar em alguns 429s transitórios. O código do seu aplicativo deve levar em conta essa possibilidade.
O que devo fazer se meu aplicativo for constantemente limitado?
Se seu aplicativo for constantemente limitado, talvez seja necessário otimizar ainda mais seus padrões de chamadas. Por exemplo:
-
Ligue com menos frequência e mantenha-se dentro dos limites da tarifa.
-
Confie em notificações push em vez de mecanismos de pesquisa.
-
Use batch APIs where available or try to do more with fewer calls. For example, with the Feeds and Reports APIs, you can send or retrieve more information per call. Generally, examine your call patterns against the operations in an API to determine if you can get the same work done in fewer calls.
Minha inscrição será limitada com mais frequência à medida que eu tiver mais autorizações?
Não. Os planos de uso são específicos para o par de aplicativos e parceiros de vendas, para que sua produtividade cresça naturalmente com seus clientes.
Os limites de taxa mudarão?
Poderíamos aumentar os limites de taxa a qualquer momento. Se reduzirmos os limites de taxa publicados na documentação de referência de API, comunicaremos a alteração com antecedência para que você tenha tempo de atualizar e testar seus aplicativos antes que a alteração entre em vigor.
Os limites de taxa para planos de uso dinâmico se ajustam automaticamente para mais ou para menos, dependendo do contexto comercial.
Meus limites de tarifa aumentarão se meu aplicativo for constantemente limitado?
Rates are based on a selling partner's business metrics. If your application is consistently throttled, your call patterns are likely not aligned with the rate limits assigned to that selling partner. Refer to What should I do if my application is consistently throttled? and The rate limits for one operation are too low for my use case. Can the limit be increased?.
Qual é a meta geral dos planos de uso dinâmico?
Historicamente, observamos que planos de uso homogêneos são superdimensionados para algumas situações e, pior ainda, subdimensionados para outras. O objetivo dos planos de uso dinâmico é aproveitar o contexto comercial 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 definidos pelo tipo, tamanho e comportamento da empresa parceira 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 mudanças significativas nas métricas de negócios em uma conta do parceiro de vendas.
Como devo codificar meu aplicativo para respeitar os limites dinâmicos?
As sugestões a seguir podem ajudar seu aplicativo a lidar com limites de taxa dinâmica:
-
Read the
x-amzn-RateLimit-Limit
header, when available. For details about when this header is available, refer to How to find your usage plan. -
Não codifique temporizadores.
-
Codifique naturalmente contra eventos em vez de executar em um loop. Se você usa eventos, não precisa de um cronômetro. Por exemplo, atualize os preços em resposta às notificações de preços em vez de a cada determinado número de segundos.
Atualizado há 2 meses