Comment exécuter des workflows n8n en parallèle
Chapitres
Résumé
Par defaut, n8n exécute les nœuds d'une boucle de manière séquentielle : chaque itération attend la fin de la précédente. Pour 5 items avec 5 secondes de traitement chacun, cela donne 25 secondes au total. L'exécution parallèle via les sous-workflows permet de réduire ce temps a 5 secondes, quel que soit le nombre d'items.
Ce tutoriel montre comment passer d'une exécution séquentielle a une exécution parallèle en utilisant le nœud Execute Sub-Workflow avec l'option "Wait for sub-workflow completion" désactivée.
Le problème : l'exécution séquentielle
Scénario classique avec une boucle SplitInBatches :
- 5 messages à envoyer sur Discord
- Chaque envoi prend 5 secondes (simulation avec un nœud Wait)
- Execution séquentielle : 5 x 5 = 25 secondes
Le workflow fonctionne mais c'est tres long. Si on a 100 items avec 2 secondes de traitement chacun, ça fait plus de 3 minutes d'attente.
La solution : sous-workflow asynchrone
Le principe est de déplacer la logique de traitement dans un sous-workflow et de l'appeler sans attendre sa completion :
1. Creer le sous-workflow
Le sous-workflow utilise le trigger "When executed by another workflow" (nœud d'écoute). Il reçoit les données en entree, exécute le traitement (wait + envoi Discord) et se termine de manière autonome. On peut définir les champs attendus en entree (ex : "message" de type string) ou accepter toutes les données.
2. Appeler depuis le workflow principal
Dans la boucle du workflow principal, on remplace les nœuds de traitement par le nœud "Execute Sub-Workflow". La configuration clé est l'option "Wait for sub-workflow completion" = Non. Sans cette option, le comportement reste séquentiel.
3. Resultat
Les 5 sous-workflows sont lances quasi-simultanément. Chacun attend ses 5 secondes en parallèle. Temps total : 5 secondes au lieu de 25. Le gain est proportionnel au nombre d'items.
Point important : l'ordre n'est pas garanti
En exécution parallèle, les sous-workflows se terminent dans un ordre imprevisible. Dans l'exemple, les messages arrivent dans l'ordre 1, 2, 3, 5, 4 au lieu de 1, 2, 3, 4, 5. Si l'ordre est critique, l'exécution parallèle n'est pas adaptee.
| Critere | Sequentiel | Parallele |
|---|---|---|
| Temps (5 items x 5s) | 25 secondes | 5 secondes |
| Ordre de completion | Garanti | Non garanti |
| Charge serveur | Faible | Plus elevee (N exécutions simultanées) |
| Complexite | 1 workflow | 2 workflows (principal + sous-workflow) |
| Cas d'usage | Ordre important, API avec rate limit | Envois independants, traitements autonomes |
Calculateur sequentiel vs parallele
Estimez le temps gagne en passant d'une execution sequentielle a une execution parallele.
Sequentiel (boucle classique)
Chaque item attend la fin du precedent
Parallele (sous-workflows)
Tous les items demarrent en meme temps
Gain : 27 secondes economisees (90% plus rapide).
Contenu détaillé
00:00Le problème de l'exécution séquentielle
Démonstration d'une boucle classique : 5 messages envoyés un par un avec 5 secondes d'attente chacun. Temps total : 25 secondes.
02:00Creer le sous-workflow
Construction du sous-workflow avec le trigger 'When executed by another workflow'. Definition des champs d'entree et de la logique de traitement.
03:30Le nœud Execute Sub-Workflow
Configuration du nœud dans le workflow principal. L'option clé : 'Wait for sub-workflow completion' désactivée pour lancer les exécutions en parallèle.
05:00Test et résultats
Exécution du workflow parallèle : les 5 messages arrivent en 5 secondes au lieu de 25. Démonstration que l'ordre de complétion n'est pas garanti (1, 2, 3, 5, 4).
06:00Debug et bonnes pratiques
Résolution d'une erreur de mapping des données entre workflow principal et sous-workflow. Cas d'usage adaptés à l'exécution parallèle.
Questions fréquentes
Transcription complète
Pour aller plus loin
Ce tutoriel vous a été utile ? Contactez-moi pour un accompagnement personnalisé sur n8n.