Comment executer des workflows n8n en parallele
Chapitres
Résumé
Par defaut, n8n execute les noeuds d'une boucle de maniere sequentielle : chaque iteration attend la fin de la precedente. Pour 5 items avec 5 secondes de traitement chacun, cela donne 25 secondes au total. L'execution parallele via les sous-workflows permet de reduire ce temps a 5 secondes, quel que soit le nombre d'items.
Ce tutoriel montre comment passer d'une execution sequentielle a une execution parallele en utilisant le noeud Execute Sub-Workflow avec l'option "Wait for sub-workflow completion" desactivee.
Le probleme : l'execution sequentielle
Scenario classique avec une boucle SplitInBatches :
- 5 messages a envoyer sur Discord
- Chaque envoi prend 5 secondes (simulation avec un noeud Wait)
- Execution sequentielle : 5 x 5 = 25 secondes
Le workflow fonctionne mais c'est tres long. Si on a 100 items avec 2 secondes de traitement chacun, ca fait plus de 3 minutes d'attente.
La solution : sous-workflow asynchrone
Le principe est de deplacer 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" (noeud d'ecoute). Il recoit les donnees en entree, execute le traitement (wait + envoi Discord) et se termine de maniere autonome. On peut definir les champs attendus en entree (ex : "message" de type string) ou accepter toutes les donnees.
2. Appeler depuis le workflow principal
Dans la boucle du workflow principal, on remplace les noeuds de traitement par le noeud "Execute Sub-Workflow". La configuration cle est l'option "Wait for sub-workflow completion" = Non. Sans cette option, le comportement reste sequentiel.
3. Resultat
Les 5 sous-workflows sont lances quasi-simultanement. Chacun attend ses 5 secondes en parallele. 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 execution parallele, 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'execution parallele 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 executions simultanees) |
| 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 probleme de l'execution sequentielle
Demonstration d'une boucle classique : 5 messages envoyes 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 noeud Execute Sub-Workflow
Configuration du noeud dans le workflow principal. L'option cle : 'Wait for sub-workflow completion' desactivee pour lancer les executions en parallele.
05:00Test et resultats
Execution du workflow parallele : les 5 messages arrivent en 5 secondes au lieu de 25. Demonstration que l'ordre de completion n'est pas garanti (1, 2, 3, 5, 4).
06:00Debug et bonnes pratiques
Resolution d'une erreur de mapping des donnees entre workflow principal et sous-workflow. Cas d'usage adaptes a l'execution parallele.
Questions fréquentes
Transcription complète
Pour aller plus loin
Ce tutoriel vous a été utile ? Contactez-moi pour un accompagnement personnalisé sur n8n.