NOTAS DE CAPACIDADE
Compartilhe uma chave da API da Pinnacle entre pollers sem 429s
Todo worker compartilha um único teto por segundo. Particione os boards, marque o ritmo contra um orçamento compartilhado e mantenha um cursor por board.
Uma chave da API da Pinnacle, cinco esportes, três processos: o limite de taxa não se importa com quantos workers você roda. O teto por segundo pertence à chave, então todo worker que você adiciona gasta do mesmo orçamento. O design que funciona particiona os boards entre os workers, marca o ritmo deles contra um limitador compartilhado e mantém um cursor por board.
O teto pertence à chave
Todo plano carrega uma cota por segundo, e cruzá-la retorna 429 com um cabeçalho Retry-After, como o guia de limites de taxa documenta, verificado em 2026-10-01. Dois pollers rodando a 6 requisições por segundo cada num nível de 10 por segundo são uma carga de 12 por segundo para a API. O primeiro número a computar, portanto, não é a velocidade de nenhum worker, mas o total: esportes vezes fases dividido pelo intervalo, somado sobre tudo que roda.
Particione os boards, não as requisições
Dê a cada worker sua própria fatia da cobertura: um conjunto de esportes e fases que nenhum outro worker toca. Particionar vence compartilhar uma fila de tarefas por uma razão: o cursor since é por board. Um worker que é dono dos seus boards é dono dos seus cursores, os armazena ao lado dos snapshots que produziram e os retoma após um reinício sem coordenar com ninguém.
Dois workers fazendo polling do mesmo board não dividem o custo do board pela metade. Eles o dobram.
Marque o ritmo contra um orçamento compartilhado
O estado de backoff tem que ser compartilhado, porque dez processos recuando educadamente ainda somam dez vezes as requisições, como o guia de limites de taxa avisa. O mesmo vale para o ritmo. Um pequeno limitador compartilhado, por exemplo um token bucket no Redis que todo worker consulta antes de uma chamada, mantém a taxa agregada abaixo do teto por mais que as agendas individuais desviem.
Mantenha o uso estacionário abaixo de cerca de 70 por cento do teto. Num nível de 10 por segundo, isso é 7 por segundo entre todos os workers combinados, deixando o resto para novas tentativas, ressincronizações e a leitura completa ocasional do board, conforme a regra de folga do mesmo guia.
Observe o agregado, não os workers
Logs por worker mentem por omissão: cada worker pode parecer saudável enquanto a soma deles está acima do orçamento. Acompanhe a taxa total de requisições e a contagem de 429s da chave, e alerte sobre isso, não sobre um processo isolado. O guia de planejamento de capacidade transforma esportes, fases e intervalo no número por segundo que você compara com o teto. Rode essa aritmética antes de adicionar um worker, não depois da primeira tempestade de 429.
Uma chave, um orçamento, muitos workers. Particione os boards, compartilhe o limitador, e o teto deixa de ser surpresa.