Limiter le parallélisme
Utilisez une file d’attente limitée côté client et envoyez chaque tâche au moyen d’une requête compatible ordinaire. Cela permet de contrôler la charge sans supposer l’existence d’un point de terminaison serveur pour le traitement par lot.
Le mode de traitement par lot d’un service constitue un contrat d’API distinct : n’utilisez sa route et son corps qu’après leur publication dans les réglages du compte ou dans la spécification.
async function runWithLimit(items, limit, work) {
const results = [];
for (let offset = 0; offset < items.length; offset += limit) {
const group = items.slice(offset, offset + limit);
results.push(...await Promise.all(group.map(work)));
}
return results;
}Contrôler la file d’attente
- Rendez l’ID interne de la tâche déterministe et unique au sein d’une exécution.
- Divisez un ensemble trop volumineux en groupes faciles à gérer.
- Distinguez l’échec d’un élément de celui de l’ensemble de la file d’attente.
Recueillir les résultats
Rattachez un résultat à un ID interne et conservez le statut de chaque tâche.
Ne relancez pas automatiquement toutes les tâches : ne réessayez que les échecs temporaires après avoir vérifié l’idempotence.