Skip to main content

Welcome to a Grasp lesson

Create a free account to keep studying and create your own study path.

Lesson 40

Limitation de débit avec le nœud Wait

Recommended resources

Bonjour !

Dans la leçon précédente, nous avons construit un workflow capable de scraper des données sur plusieurs pages en utilisant une boucle de pagination. C'est une technique très puissante, mais elle soulève un nouveau défi : en automatisant les requêtes, nous pouvons envoyer des dizaines de requêtes à un serveur en quelques secondes. Ce comportement est facilement détectable et peut entraîner le blocage de notre adresse IP.

Aujourd'hui, nous allons apprendre à être des "scrapeurs polis et efficaces". L'objectif de cette leçon est d'apprendre à utiliser le nœud Wait pour implémenter une limitation de débit (rate limiting), une pratique indispensable pour assurer la longévité et la fiabilité de nos workflows de scraping.


1. Qu'est-ce que la Limitation de Débit (Rate Limiting) ?

La limitation de débit est une stratégie utilisée par les serveurs web et les API pour contrôler la quantité de trafic qu'ils reçoivent. En limitant le nombre de requêtes qu'un utilisateur ou une adresse IP peut faire dans un certain laps de temps, les services se protègent contre les surcharges, les abus et les attaques par déni de service (DoS).

De notre point de vue, en tant que développeurs d'automatisations, respecter ces limites (implicites ou explicites) est crucial pour deux raisons :

  • Fiabilité : Éviter de se faire bloquer ou de recevoir des codes d'erreur (comme 429 Too Many Requests), ce qui ferait échouer notre workflow.
  • Éthique : Ne pas surcharger le serveur cible. Un scraping responsable n'impacte pas négativement les performances du site pour les autres utilisateurs.

Certaines API documentent clairement leurs limites de débit. Il est toujours recommandé de consulter cette documentation lorsque c'est possible.



2. Le Nœud Wait : L'Art de la Patience

Heureusement, n8n nous fournit un outil très simple pour gérer cela : le nœud Wait.

Ce nœud a une fonction unique : mettre en pause l'exécution du workflow pendant une durée déterminée. Ses paramètres sont très simples :

  • Time: La valeur numérique de la durée.
  • Unit: L'unité de temps (secondes, minutes, heures).
n8n Workflow with Wait Node for Rate Limiting
Exemple d'un workflow n8n qui traite plusieurs flux RSS. Notez la présence cruciale du nœud `Wait` à l'intérieur de la boucle pour introduire une pause entre le traitement de chaque flux.

La question la plus importante n'est pas comment configurer ce nœud, mais où le placer.



3. Placer le Nœud Wait dans une Boucle de Scraping

Pour être efficace, le nœud Wait doit être placé à l'intérieur de la boucle de scraping. Le but est d'introduire une pause entre chaque requête HTTP.

Reprenons la structure de la boucle de pagination de la leçon précédente :

  1. Initialiser/Incrémenter le compteur de page.
  2. Faire la requête HTTP Request pour la page actuelle.
  3. Extraire les données avec HTML Extract.
  4. Vérifier s'il y a une page suivante avec un nœud IF.

Le placement correct du nœud Wait est juste après l'extraction des données et avant de boucler pour la page suivante.

Le flux logique devient :
Requête HTTP -> Extraction des données -> Wait -> Nœud IF -> (si true) -> Retour au début de la boucle.

Tutoriel : Scraper Instagram en illimité sans utiliser de cookies

Cet article en français de Hackceleration, qui décrit un workflow de scraping pour Instagram, illustre parfaitement ce principe dans un cas réel. Il mentionne explicitement l'utilisation d'un nœud d'attente.

Lisez le court paragraphe de l'Étape 3 : Lancement et suivi du scraping Instagram via Apify. Concentrez-vous sur la dernière phrase : "Tant que le statut n’est pas SUCCEEDED, la requête revient en boucle après un délai d’attente (wait node) de quelques secondes. Cela permet d’éviter d’envoyer trop de requêtes API trop vite..."

Mini-Exercice : Ralentir notre Scraper

Reprenez le workflow que vous avez construit dans la leçon précédente pour scraper les ordinateurs portables sur webscraper.io.

  1. Ajoutez un nœud Wait dans votre workflow.
  2. Placez-le juste avant le nœud IF qui vérifie la pagination.
  3. Configurez-le pour attendre 2 secondes.

En exécutant le workflow, vous devriez voir dans le panneau d'exécution que n8n marque une pause visible entre le traitement de la page 1 et celui de la page 2. Vous venez d'implémenter votre première limitation de débit !



4. Le Patron de Conception : Loop Over Items + Wait

La méthode la plus courante et la plus robuste pour traiter de grands volumes de données (que ce soit pour du scraping ou des appels API) combine les nœuds Loop Over Items (Split in Batches) et Wait.

La logique est la suivante :

  1. On fournit une liste complète d'éléments à traiter au nœud Loop Over Items (par exemple, une liste d'URLs à scraper).
  2. On configure le nœud pour traiter les éléments par lots (par exemple, 10 URLs à la fois).
  3. Après chaque lot, on place un nœud Wait pour marquer une pause avant de passer au lot suivant.

Cette approche est extrêmement efficace pour respecter des limites de débit du type "X requêtes par minute". Par exemple, si une API autorise 60 requêtes par minute, vous pouvez configurer votre workflow pour traiter des lots de 60 et attendre une minute entre chaque lot.

n8n Loop Over Items: The RIGHT Way vs The WRONG Way

Cette vidéo (en anglais) explique de manière très claire pourquoi et comment utiliser cette combinaison. Elle est fondamentale pour construire des automatisations robustes.

Regardez les sections suivantes : De 01:09 à 03:10 : Introduction au problème des limites de débit (rate limits) pour les API et le scraping. De 10:14 à 11:02 : Le moment clé. Le présentateur explique exactement où placer le nœud Wait à l'intérieur de la boucle créée par Loop Over Items. De 11:53 à 16:45 : Une démonstration pratique complète qui envoie des données à Google Sheets par lots de 10, avec une attente de 2 secondes entre chaque lot. Observez comment le workflow se comporte et comment les données apparaissent progressivement dans la feuille de calcul.

Pour des exemples supplémentaires et des explications en français, je vous recommande vivement cet article.

Comment utiliser le nœud Loop Over Items (Split in Batches) dans n8n

L'article de Hostinger offre plusieurs excellents exemples pratiques d'utilisation des nœuds Loop Over Items (Split in Batches) et Wait pour gérer la limitation de débit dans différents contextes.

Parcourez les sections "Envoi d’e-mails en masse par lots contrôlés" et "Traitement de grands ensembles de données avec le traitement par lots". Remarquez comment, dans chaque cas, un nœud Wait est ajouté après le traitement d'un lot pour respecter les limites (des fournisseurs d'email ou des API).



5. Bonnes Pratiques : Quel Délai Choisir ?

La question finale est : "Combien de temps dois-je attendre ?". Il n'y a pas de réponse unique, mais voici quelques directives :

  1. Lisez la documentation : Pour les API, les limites de débit sont presque toujours spécifiées. C'est la source d'information la plus fiable.
  2. Vérifiez le fichier robots.txt : Parfois, les sites web spécifient une directive Crawl-delay dans leur fichier robots.txt (accessible via https://nomdusite.com/robots.txt). Cette valeur, en secondes, est une suggestion de délai à respecter entre les requêtes.
  3. Soyez conservateur : En l'absence d'information, commencez avec un délai raisonnable (par exemple, entre 2 et 5 secondes). L'objectif est de ne pas être plus rapide qu'un humain.
  4. Variez les délais (avancé) : Pour un scraping encore plus discret, vous pouvez introduire une attente aléatoire (par exemple, entre 1 et 4 secondes). Cela rend le comportement de votre script moins prévisible et moins "robotique". Cela peut être réalisé en utilisant une expression dans le nœud Wait.


Conclusion

Vous maîtrisez désormais une technique essentielle pour tout projet d'automatisation impliquant des requêtes web. Vous savez non seulement comment scraper des données, mais aussi comment le faire de manière responsable et durable.

Points clés à retenir :

  • La limitation de débit est une pratique cruciale pour éviter d'être bloqué et pour ne pas surcharger les serveurs.
  • Le nœud Wait est l'outil principal pour implémenter cette limitation dans n8n.
  • Il doit être placé à l'intérieur de la boucle d'itération pour créer une pause entre chaque requête ou chaque lot de requêtes.
  • Le délai d'attente doit être choisi en se basant sur la documentation, les directives du site, ou, à défaut, une estimation conservatrice.

Nos requêtes sont maintenant polies et espacées. Dans la prochaine leçon, nous allons les rendre encore plus crédibles en apprenant à personnaliser les en-têtes HTTP, notamment le User-Agent, pour que notre script ressemble davantage à un navigateur web standard.