Oi pessoal, estou lidando com um problema de scaling mais avançado e gostaria de orientação.
Tenho múltiplos workflows rodando em paralelo (disparados por webhooks e cron) que todos chamam a mesma API externa, que tem limites de taxa rigorosos (por exemplo, 100 requisições por minuto). Conforme o uso cresce, estou começando a receber erros 429, e as tentativas de retry estão piorando as coisas ao criar picos.
A configuração atual parece:
Webhook/Cron → Split In Batches → HTTP Request → Process
Neste momento:
Cada workflow lida com seus próprios retries
Nenhuma consciência compartilhada dos limites de taxa
Ocasionais picos excedem os limites da API
Exemplo de lógica de retry:
if ($json.statusCode === 429) {
await new Promise(resolve => setTimeout(resolve, 1000));
return $input.all();
}
O problema:
Múltiplos workflows fazem retry ao mesmo tempo → efeito de rebanho trovejante
Desacelerar um workflow não resolve os outros
Eu preciso de controle de limite de taxa global, não por workflow
Estou considerando:
Usar uma fila (Redis / Bull)
Centralizar chamadas da API em um único workflow
Construir um rate limiter customizado com estado compartilhado
Descreva o problema/erro/pergunta
Qual é o melhor padrão no n8n para lidar com limite de taxa global em múltiplos workflows mantendo uma boa taxa de transferência?
Qual é a mensagem de erro (se houver)?
Por favor, compartilhe seu workflow
(Selecione os nós no seu canvas e use os atalhos de teclado CMD+C/CTRL+C e CMD+V/CTRL+V para copiar e colar o workflow.)
Compartilhe o resultado retornado pelo último nó
Informações sobre sua configuração n8n
- Versão n8n:
- Banco de dados (padrão: SQLite):
- Configuração n8n EXECUTIONS_PROCESS (padrão: own, main):
- Rodando n8n via (Docker, npm, n8n cloud, aplicativo desktop):
- Sistema operacional: