ZPLToolkit

Limites e alternativas

“Request rate limit exceeded” ao renderizar ZPL

O que significa um limite por segundo numa API de renderização de ZPL, os três caminhos para contorná-lo, e como parar de esbarrar nele.

O que o erro quer dizer

Uma API de renderização de ZPL transforma cada prévia numa requisição HTTP e, para impedir que um usuário sature o serviço, essas requisições são limitadas por segundo. Passar do limite não põe sua requisição numa fila — rejeita — e é por isso que a falha chega como erro em vez de resposta lenta.

O limite é por segundo, não por dia, então este é o erro que vem de um laço. Um script renderizando um lote o mais rápido que consegue esbarra nele já nas primeiras dezenas; o mesmo script com uma pausa entre chamadas não esbarra nenhuma vez.

Consulte a documentação do próprio serviço para os números atuais. Operadores mudam esses valores, e um guia que fixa um número fica errado no dia seguinte.

Três caminhos

  1. 1Desacelere o laço. Uma pausa entre requisições que te mantenha abaixo da taxa documentada é a menor mudança possível, e custa só tempo de relógio. Acrescente uma repetição com recuo exponencial para as que falharem mesmo assim.
  2. 2Mande menos requisições. A maioria das APIs de renderização aceita várias etiquetas numa chamada e devolve várias imagens. Agrupar costuma render mais que espaçar, porque reduz a contagem de requisições em vez de distribuí-la.
  3. 3Renderize localmente. Um renderizador que roda no navegador não faz requisição nenhuma, então não há taxa a exceder. É a opção sem teto, e a troca é que um renderizador local não bate com a impressora em todos os comandos.

Como parar de esbarrar

A maior parte do problema de limite de taxa vem de visualizar no lugar errado do processo. Se toda etiqueta de um lote é renderizada para conferir o modelo, era o modelo que precisava ser conferido — uma vez, não duzentas.

Uma divisão útil é validar todas as etiquetas e renderizar só as que precisam de olhar. Um linter aponta um ^XA desbalanceado, um campo fora da borda da etiqueta ou um código de barras sem zona de silêncio sem desenhar nada, então não custa nada por etiqueta e pega quase tudo o que uma conferência visual pegaria.

^XA
^PW812
^LL1218
^FO50,50^A0N,50,50^FDRemessa 4821^FS
^BY3,3,120
^FO50,140^BCN,120,Y,N,N^FD0123456789^FS
^XZ
Uma etiqueta como esta pode ser conferida quanto a estrutura, limites e zona de silêncio sem ser renderizada.

Abrir o visualizador ZPL

Renderize quantas etiquetas quiser, localmente, sem requisição a limitar e sem nada ser enviado.

Abrir o visualizador ZPL

Perguntas frequentes

Esperar e tentar de novo resolve?
Para um caso isolado, sim — o limite é por segundo, então o segundo seguinte é um orçamento novo. Para um lote, repetir sem espaçar só esbarra no limite de novo um instante depois; acrescente uma pausa ou recue exponencialmente.
Limite de taxa é o mesmo que cota diária?
Não. Limite de taxa é a que velocidade você pode pedir, e reinicia constantemente; cota diária é quanto você pode pedir no total, e reinicia uma vez por dia. As soluções são diferentes — espaçar resolve um, e só reduzir volume resolve o outro.
Visualizar no navegador tem limite de taxa?
Não, porque não há requisição a limitar. A renderização acontece na sua máquina, então o único teto é a velocidade com que ela desenha.

Guias relacionados