A seguir, mostro um exemplo de como implementar concorrência de forma eficiente.

Como posso evitar lentidão ao processar milhares de requisições em uma API Node.js?

Claro. A lentidão e o alto consumo de memória geralmente ocorrem quando as requisições não são gerenciadas em lotes ou quando não há um controle de concorrência adequado no Node.js.

A melhor abordagem é utilizar a biblioteca p-limit ou construir um pool de promessas customizado. Abaixo, mostro um exemplo utilizando Promise.all com fatiamento em chunks para controlar a carga:

javascript
1const axios = require('axios');
2
3async function processarEmLotes(itens, tamanhoLote) {
4 const resultados = [];
5
6 for (let i = 0; i < itens.length; i += tamanhoLote) {
7 const lote = itens.slice(i, i + tamanhoLote);
8
9 Executa as requisições do lote concorrentes
10 const promessasLote = lote.map(item =>
11 axios.get(`https://api.exemplo.com/dados/${item.id}`)
12 );
13
14 const respostasLote = await Promise.all(promessasLote);
15 resultados.push(...respostasLote.map(res => res.data));
16 }
17
18 return resultados;
19}

Esse padrão limita a memória utilizada ao processar os chunks sequencialmente, mas paraleliza as requisições dentro de cada lote — um equilíbrio ideal entre velocidade e consumo de recursos.

Secured
A IA pode cometer erros. Considere verificar informações importantes.