Workflow n8n

Automatisation n8n : gestion de la limitation de débit

Ce workflow n8n a pour objectif de gérer efficacement la limitation de débit lors de l'utilisation d'API, permettant ainsi d'éviter les interruptions de service et d'optimiser les performances. Dans un contexte où les entreprises dépendent de flux de données constants, ce type d'automatisation est essentiel pour garantir une expérience utilisateur fluide. Les cas d'usage incluent la gestion des appels API vers des services tiers tout en respectant leurs limites de requêtes. Le workflow commence par un déclencheur de type Webhook, qui reçoit des requêtes entrantes. Ensuite, il utilise un nœud Switch pour déterminer le chemin à suivre selon les conditions définies. Des vérifications de l'état de limitation sont effectuées via des nœuds HTTP Request, permettant de récupérer des informations sur l'état actuel de la connexion. Si la connexion est limitée, le workflow peut choisir de mettre en pause ou d'arrêter les requêtes, ou bien de reprendre les téléchargements lorsque cela est possible. En intégrant des nœuds de type 'noOp', le workflow assure une gestion fluide des différentes étapes sans exécuter d'actions inutiles. Les bénéfices de cette automatisation incluent une réduction des erreurs liées aux dépassements de quotas, une meilleure gestion des ressources et une amélioration de la satisfaction client grâce à des services toujours disponibles.

Tags clés :automatisationAPIn8ngestion de donnéesperformance
Catégorie: Webhook · Tags: automatisation, API, n8n, gestion de données, performance0

Workflow n8n gestion de données, performance : vue d'ensemble

Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.

Workflow n8n gestion de données, performance : détail des nœuds

  • Webhook

    Ce noeud reçoit des requêtes HTTP via un webhook.

  • Switch

    Ce noeud permet de diriger le flux en fonction de conditions définies.

  • Resume

    Ce noeud ne réalise aucune action et sert à maintenir le flux.

  • Check if Local

    Ce noeud évalue des conditions pour déterminer le chemin à suivre dans le workflow.

  • Play

    Ce noeud ne réalise aucune action et sert à maintenir le flux.

  • Don't Do Anything

    Ce noeud ne réalise aucune action et sert à maintenir le flux.

  • Pause

    Ce noeud ne réalise aucune action et sert à maintenir le flux.

  • Stop

    Ce noeud ne réalise aucune action et sert à maintenir le flux.

  • Get QB Cookie

    Ce noeud effectue une requête HTTP pour obtenir un cookie de QuickBooks.

  • Get QB Cookie1

    Ce noeud effectue une requête HTTP pour obtenir un autre cookie de QuickBooks.

  • Global Variables

    Ce noeud définit des variables globales pour être utilisées dans le workflow.

  • Check Throttle State

    Ce noeud effectue une requête HTTP pour vérifier l'état du throttle.

  • Check if Throttled

    Ce noeud évalue des conditions pour déterminer si le throttle est actif.

  • Do Nothing

    Ce noeud ne réalise aucune action et sert à maintenir le flux.

  • Check Throttle State2

    Ce noeud effectue une requête HTTP pour vérifier l'état du throttle à nouveau.

  • Check if Throttled1

    Ce noeud évalue des conditions pour déterminer si le throttle est actif dans un autre contexte.

  • Do Nothing1

    Ce noeud ne réalise aucune action et sert à maintenir le flux.

  • Throttle Connection

    Ce noeud ne réalise aucune action et sert à maintenir le flux.

  • Resume Downloads

    Ce noeud ne réalise aucune action et sert à maintenir le flux.

  • Disable Throttle

    Ce noeud effectue une requête HTTP pour désactiver le throttle.

  • Enable Throttle

    Ce noeud effectue une requête HTTP pour activer le throttle.

Inscris-toi pour voir l'intégralité du workflow

Inscription gratuite

S'inscrire gratuitementBesoin d'aide ?
{
  "id": 11,
  "name": "Plex Automatic Throttler",
  "nodes": [
    {
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        60,
        440
      ],
      "webhookId": "72a05ff6-05f5-4e7a-9eee-54a350bb6a47",
      "parameters": {
        "path": "72a05ff6-05f5-4e7a-9eee-54a350bb6a47",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 1
    },
    {
      "name": "Switch",
      "type": "n8n-nodes-base.switch",
      "position": [
        640,
        580
      ],
      "parameters": {
        "rules": {
          "rules": [
            {
              "value2": "media.resume",
              "operation": "contains"
            },
            {
              "output": 1,
              "value2": "media.play",
              "operation": "contains"
            },
            {
              "output": 2,
              "value2": "media.pause",
              "operation": "contains"
            },
            {
              "output": 3,
              "value2": "media.stop",
              "operation": "contains"
            }
          ]
        },
        "value1": "={{$node[\"Webhook\"].json[\"body\"][\"payload\"]}}",
        "dataType": "string"
      },
      "typeVersion": 1
    },
    {
      "name": "Resume",
      "type": "n8n-nodes-base.noOp",
      "position": [
        860,
        280
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "name": "Check if Local",
      "type": "n8n-nodes-base.if",
      "position": [
        460,
        440
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{$json[\"body\"][\"payload\"]}}",
              "value2": "\"local\":false",
              "operation": "contains"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Play",
      "type": "n8n-nodes-base.noOp",
      "position": [
        860,
        440
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "name": "Don't Do Anything",
      "type": "n8n-nodes-base.noOp",
      "position": [
        660,
        220
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "name": "Pause",
      "type": "n8n-nodes-base.noOp",
      "position": [
        860,
        680
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "name": "Stop",
      "type": "n8n-nodes-base.noOp",
      "position": [
        860,
        840
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "name": "Get QB Cookie",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1260,
        360
      ],
      "parameters": {
        "url": "=http://{{$node[\"Global Variables\"].json[\"qbittorent\"][\"internalIP\"]}}:{{$node[\"Global Variables\"].json[\"qbittorent\"][\"port\"]}}/api/v2/auth/login",
        "options": {
          "fullResponse": true
        },
        "responseFormat": "string",
        "queryParametersUi": {
          "parameter": [
            {
              "name": "username",
              "value": "={{$node[\"Global Variables\"].json[\"qbittorent\"][\"username\"]}}"
            },
            {
              "name": "password",
              "value": "={{$node[\"Global Variables\"].json[\"qbittorent\"][\"password\"]}}"
            }
          ]
        },
        "headerParametersUi": {
          "parameter": [
            {
              "name": "Referer",
              "value": "=http://localhost:{{$node[\"Global Variables\"].json[\"qbittorent\"][\"port\"]}}"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Get QB Cookie1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1260,
        760
      ],
      "parameters": {
        "url": "=http://{{$node[\"Global Variables\"].json[\"qbittorent\"][\"internalIP\"]}}:{{$node[\"Global Variables\"].json[\"qbittorent\"][\"port\"]}}/api/v2/auth/login",
        "options": {
          "fullResponse": true
        },
        "responseFormat": "string",
        "queryParametersUi": {
          "parameter": [
            {
              "name": "username",
              "value": "={{$node[\"Global Variables\"].json[\"qbittorent\"][\"username\"]}}"
            },
            {
              "name": "password",
              "value": "={{$node[\"Global Variables\"].json[\"qbittorent\"][\"password\"]}}"
            }
          ]
        },
        "headerParametersUi": {
          "parameter": [
            {
              "name": "Referer",
              "value": "=http://localhost:{{$node[\"Global Variables\"].json[\"qbittorent\"][\"port\"]}}"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Global Variables",
      "type": "n8n-nodes-base.set",
      "position": [
        280,
        440
      ],
      "parameters": {
        "values": {
          "string": [
            {
              "name": "qbittorent.username",
              "value": "yourusername"
            },
            {
              "name": "qbittorent.password",
              "value": "yourpassword"
            },
            {
              "name": "qbittorent.internalIP",
              "value": "192.168.1.218"
            },
            {
              "name": "qbittorent.port",
              "value": "2020"
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "name": "Check Throttle State",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1460,
        360
      ],
      "parameters": {
        "url": "=http://{{$node[\"Global Variables\"].json[\"qbittorent\"][\"internalIP\"]}}:{{$node[\"Global Variables\"].json[\"qbittorent\"][\"port\"]}}/api/v2/transfer/speedLimitsMode",
        "options": {
          "fullResponse": true
        },
        "requestMethod": "POST",
        "queryParametersUi": {
          "parameter": [
            {
              "name": "Cookie",
              "value": "={{$node[\"Get QB Cookie\"].json[\"headers\"][\"set-cookie\"][0].match(/[^;]*/).toString()}}"
            }
          ]
        },
        "headerParametersUi": {
          "parameter": [
            {
              "name": "Referer",
              "value": "=http://localhost:{{$node[\"Global Variables\"].json[\"qbittorent\"][\"port\"]}}"
            },
            {
              "name": "Cookie",
              "value": "={{$node[\"Get QB Cookie\"].json[\"headers\"][\"set-cookie\"][0].match(/[^;]*/).toString()}}"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Check if Throttled",
      "type": "n8n-nodes-base.if",
      "position": [
        1680,
        360
      ],
      "parameters": {
        "conditions": {
          "number": [
            {
              "value1": "={{$json[\"body\"]}}",
              "value2": 1,
              "operation": "equal"
            }
          ],
          "string": []
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Do Nothing",
      "type": "n8n-nodes-base.noOp",
      "position": [
        1900,
        260
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "name": "Check Throttle State2",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1460,
        760
      ],
      "parameters": {
        "url": "=http://{{$node[\"Global Variables\"].json[\"qbittorent\"][\"internalIP\"]}}:{{$node[\"Global Variables\"].json[\"qbittorent\"][\"port\"]}}/api/v2/transfer/speedLimitsMode",
        "options": {
          "fullResponse": true
        },
        "requestMethod": "POST",
        "queryParametersUi": {
          "parameter": [
            {
              "name": "Cookie",
              "value": "={{$node[\"Get QB Cookie1\"].json[\"headers\"][\"set-cookie\"][0].match(/[^;]*/).toString()}}"
            }
          ]
        },
        "headerParametersUi": {
          "parameter": [
            {
              "name": "Referer",
              "value": "=http://localhost:{{$node[\"Global Variables\"].json[\"qbittorent\"][\"port\"]}}"
            },
            {
              "name": "Cookie",
              "value": "={{$node[\"Get QB Cookie1\"].json[\"headers\"][\"set-cookie\"][0].match(/[^;]*/).toString()}}"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Check if Throttled1",
      "type": "n8n-nodes-base.if",
      "position": [
        1660,
        760
      ],
      "parameters": {
        "conditions": {
          "number": [
            {
              "value1": "={{$json[\"body\"]}}",
              "value2": 1,
              "operation": "equal"
            }
          ],
          "string": []
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Do Nothing1",
      "type": "n8n-nodes-base.noOp",
      "position": [
        1900,
        860
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "name": "Throttle Connection",
      "type": "n8n-nodes-base.noOp",
      "position": [
        1060,
        360
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "name": "Resume Downloads",
      "type": "n8n-nodes-base.noOp",
      "position": [
        1060,
        760
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "name": "Disable Throttle",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1900,
        660
      ],
      "parameters": {
        "url": "=http://{{$node[\"Global Variables\"].json[\"qbittorent\"][\"internalIP\"]}}:{{$node[\"Global Variables\"].json[\"qbittorent\"][\"port\"]}}/api/v2/transfer/toggleSpeedLimitsMode",
        "options": {},
        "requestMethod": "POST",
        "queryParametersUi": {
          "parameter": [
            {
              "name": "Cookie",
              "value": "={{$node[\"Get QB Cookie1\"].json[\"headers\"][\"set-cookie\"][0].match(/[^;]*/).toString()}}"
            }
          ]
        },
        "headerParametersUi": {
          "parameter": [
            {
              "name": "Referer",
              "value": "=http://localhost:{{$node[\"Global Variables\"].json[\"qbittorent\"][\"port\"]}}"
            },
            {
              "name": "Cookie",
              "value": "={{$node[\"Get QB Cookie1\"].json[\"headers\"][\"set-cookie\"][0].match(/[^;]*/).toString()}}"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Enable Throttle",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1900,
        440
      ],
      "parameters": {
        "url": "=http://{{$node[\"Global Variables\"].json[\"qbittorent\"][\"internalIP\"]}}:{{$node[\"Global Variables\"].json[\"qbittorent\"][\"port\"]}}/api/v2/transfer/toggleSpeedLimitsMode",
        "options": {},
        "requestMethod": "POST",
        "queryParametersUi": {
          "parameter": [
            {
              "name": "Cookie",
              "value": "={{$node[\"Get QB Cookie\"].json[\"headers\"][\"set-cookie\"][0].match(/[^;]*/).toString()}}"
            }
          ]
        },
        "headerParametersUi": {
          "parameter": [
            {
              "name": "Referer",
              "value": "=http://localhost:{{$node[\"Global Variables\"].json[\"qbittorent\"][\"port\"]}}"
            },
            {
              "name": "Cookie",
              "value": "={{$node[\"Get QB Cookie\"].json[\"headers\"][\"set-cookie\"][0].match(/[^;]*/).toString()}}"
            }
          ]
        }
      },
      "typeVersion": 1
    }
  ],
  "active": true,
  "settings": {},
  "connections": {
    "Play": {
      "main": [
        [
          {
            "node": "Throttle Connection",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Stop": {
      "main": [
        [
          {
            "node": "Resume Downloads",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Pause": {
      "main": [
        [
          {
            "node": "Resume Downloads",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Resume": {
      "main": [
        [
          {
            "node": "Throttle Connection",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Switch": {
      "main": [
        [
          {
            "node": "Resume",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Play",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Pause",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Stop",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook": {
      "main": [
        [
          {
            "node": "Global Variables",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get QB Cookie": {
      "main": [
        [
          {
            "node": "Check Throttle State",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check if Local": {
      "main": [
        [
          {
            "node": "Don't Do Anything",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Switch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get QB Cookie1": {
      "main": [
        [
          {
            "node": "Check Throttle State2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Global Variables": {
      "main": [
        [
          {
            "node": "Check if Local",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Resume Downloads": {
      "main": [
        [
          {
            "node": "Get QB Cookie1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check if Throttled": {
      "main": [
        [
          {
            "node": "Do Nothing",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Enable Throttle",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check if Throttled1": {
      "main": [
        [
          {
            "node": "Disable Throttle",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Do Nothing1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Throttle Connection": {
      "main": [
        [
          {
            "node": "Get QB Cookie",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Throttle State": {
      "main": [
        [
          {
            "node": "Check if Throttled",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Throttle State2": {
      "main": [
        [
          {
            "node": "Check if Throttled1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Workflow n8n gestion de données, performance : pour qui est ce workflow ?

Ce workflow s'adresse principalement aux entreprises qui utilisent des API et qui doivent gérer des limitations de débit. Il est particulièrement utile pour les équipes techniques et les développeurs travaillant dans des environnements à forte intensité de données, ainsi que pour les PME et les grandes entreprises qui cherchent à optimiser leurs processus d'intégration d'API.

Workflow n8n gestion de données, performance : problème résolu

Ce workflow résout le problème de la gestion des limitations de débit lors des appels API, ce qui peut entraîner des interruptions de service et des erreurs de traitement. En automatisant ce processus, les utilisateurs peuvent éviter des pertes de temps liées à la gestion manuelle des quotas et réduire le risque de blocage de leurs services. Après la mise en place de ce workflow, les utilisateurs bénéficient d'une intégration API plus stable et d'une meilleure performance globale de leurs systèmes.

Workflow n8n gestion de données, performance : étapes du workflow

Étape 1 : Le workflow commence par un déclencheur Webhook qui reçoit des requêtes.

  • Étape 1 : Un nœud Switch détermine le chemin à suivre en fonction des conditions définies.
  • Étape 2 : Des vérifications de l'état de limitation sont effectuées via des nœuds HTTP Request pour récupérer les informations nécessaires.
  • Étape 3 : Selon l'état de la connexion, le workflow peut choisir de mettre en pause, d'arrêter ou de reprendre les téléchargements.
  • Étape 4 : Des nœuds 'noOp' sont utilisés pour gérer les différentes étapes sans exécuter d'actions inutiles.

Workflow n8n gestion de données, performance : guide de personnalisation

Pour personnaliser ce workflow, vous pouvez modifier l'URL du webhook pour l'adapter à votre environnement. Il est également possible de changer les paramètres des nœuds HTTP Request pour correspondre aux spécificités de l'API que vous utilisez. Pensez à ajuster les conditions dans le nœud Switch pour répondre à vos besoins spécifiques en matière de gestion de débit. Vous pouvez également ajouter des nœuds supplémentaires pour intégrer d'autres services ou outils selon vos exigences. Assurez-vous de tester le workflow dans un environnement sécurisé avant de le déployer en production.