Workflow: Stopanderror Wait Automation

Workflow Details

Download Workflow
{
    "id": "Y5URlIlbX4HDzWKA",
    "meta": {
        "instanceId": "6ae0aa8b6c9099f1f8ed1265281802eab47aaf5b2845f317791e4ac7ee5b7279",
        "templateCredsSetupCompleted": true
    },
    "name": "airflow dag_run",
    "tags": [
        {
            "id": "YSelDQ3zfWB0LeVn",
            "name": "airflow",
            "createdAt": "2025-02-25T04:17:21.943Z",
            "updatedAt": "2025-02-25T04:17:21.943Z"
        }
    ],
    "nodes": [
        {
            "id": "0d4457ef-7a88-4755-8bd2-b0e8148f86f4",
            "name": "Airflow: dag_run",
            "type": "n8n-nodes-base.httpRequest",
            "position": [
                380,
                -40
            ],
            "parameters": {
                "url": "={{ $('airflow-api').item.json.prefix }}\/api\/v1\/dags\/{{ $('in data').item.json.dag_id }}\/dagRuns",
                "method": "POST",
                "options": [],
                "jsonBody": "={\n  \"conf\": {{ $('in data').item.json.conf }}\n}",
                "sendBody": true,
                "specifyBody": "json",
                "authentication": "genericCredentialType",
                "genericAuthType": "httpBasicAuth"
            },
            "credentials": {
                "httpBasicAuth": {
                    "id": "vTR4WWA7czRn2ULn",
                    "name": "Airflow"
                }
            },
            "typeVersion": 4.20000000000000017763568394002504646778106689453125
        },
        {
            "id": "acf477a0-aad5-402a-a5a0-543f3e277333",
            "name": "Airflow: dag_run - state",
            "type": "n8n-nodes-base.httpRequest",
            "position": [
                840,
                60
            ],
            "parameters": {
                "url": "={{ $('airflow-api').item.json.prefix }}\/api\/v1\/dags\/{{ $('in data').item.json.dag_id }}\/dagRuns\/{{ $('Airflow: dag_run').item.json.dag_run_id }}",
                "options": [],
                "authentication": "genericCredentialType",
                "genericAuthType": "httpBasicAuth"
            },
            "credentials": {
                "httpBasicAuth": {
                    "id": "vTR4WWA7czRn2ULn",
                    "name": "Airflow"
                }
            },
            "typeVersion": 4.20000000000000017763568394002504646778106689453125
        },
        {
            "id": "26982a6f-6281-4140-a05c-ea6f3f2c0cb2",
            "name": "count",
            "type": "n8n-nodes-base.code",
            "position": [
                1180,
                40
            ],
            "parameters": {
                "jsCode": "try {\n  $('count').first().json.count += 1\n  return {count:$('count').first().json.count};\n}\ncatch (error) {\n  return {count:1};\n}"
            },
            "typeVersion": 2
        },
        {
            "id": "613718f6-ba7e-415c-8e07-0123224e1ac6",
            "name": "dag run fail",
            "type": "n8n-nodes-base.stopAndError",
            "position": [
                1180,
                400
            ],
            "parameters": {
                "errorMessage": "dag run fail"
            },
            "typeVersion": 1
        },
        {
            "id": "66ba0e85-4608-418b-b27b-8cbc50f78319",
            "name": "if state == queued",
            "type": "n8n-nodes-base.if",
            "position": [
                520,
                60
            ],
            "parameters": {
                "options": [],
                "conditions": {
                    "options": {
                        "version": 2,
                        "leftValue": "",
                        "caseSensitive": true,
                        "typeValidation": "strict"
                    },
                    "combinator": "and",
                    "conditions": [
                        {
                            "id": "0ae67986-09c0-443d-9262-075bfe94ca2e",
                            "operator": {
                                "name": "filter.operator.equals",
                                "type": "string",
                                "operation": "equals"
                            },
                            "leftValue": "={{ $json.state }}",
                            "rightValue": "queued"
                        }
                    ]
                }
            },
            "typeVersion": 2.20000000000000017763568394002504646778106689453125
        },
        {
            "id": "92176e9a-0ea7-48b0-9ca0-ea4ea8442cee",
            "name": "dag run wait too long",
            "type": "n8n-nodes-base.stopAndError",
            "position": [
                1500,
                40
            ],
            "parameters": {
                "errorMessage": "dag run wait too long"
            },
            "typeVersion": 1
        },
        {
            "id": "6a05471f-232e-44d6-9dbb-583400537507",
            "name": "Airflow: dag_run - get result",
            "type": "n8n-nodes-base.httpRequest",
            "position": [
                1180,
                -140
            ],
            "parameters": {
                "url": "={{ $('airflow-api').item.json.prefix }}\/api\/v1\/dags\/{{ $('in data').item.json.dag_id }}\/dagRuns\/{{ $('Airflow: dag_run').item.json.dag_run_id }}\/taskInstances\/{{ $('in data').item.json.task_id }}\/xcomEntries\/return_value",
                "options": [],
                "authentication": "genericCredentialType",
                "genericAuthType": "httpBasicAuth"
            },
            "credentials": {
                "httpBasicAuth": {
                    "id": "vTR4WWA7czRn2ULn",
                    "name": "Airflow"
                }
            },
            "typeVersion": 4.20000000000000017763568394002504646778106689453125
        },
        {
            "id": "fb2211d5-cef2-4be2-b281-de315aa07093",
            "name": "Switch: state",
            "type": "n8n-nodes-base.switch",
            "position": [
                980,
                -40
            ],
            "parameters": {
                "rules": {
                    "values": [
                        {
                            "outputKey": "=success",
                            "conditions": {
                                "options": {
                                    "version": 2,
                                    "leftValue": "",
                                    "caseSensitive": true,
                                    "typeValidation": "strict"
                                },
                                "combinator": "and",
                                "conditions": [
                                    {
                                        "id": "4d4ecf8a-c02b-4722-9528-1919cdf9b83e",
                                        "operator": {
                                            "name": "filter.operator.equals",
                                            "type": "string",
                                            "operation": "equals"
                                        },
                                        "leftValue": "={{ $json.state }}",
                                        "rightValue": "success"
                                    }
                                ]
                            },
                            "renameOutput": true
                        },
                        {
                            "outputKey": "queued",
                            "conditions": {
                                "options": {
                                    "version": 2,
                                    "leftValue": "",
                                    "caseSensitive": true,
                                    "typeValidation": "strict"
                                },
                                "combinator": "and",
                                "conditions": [
                                    {
                                        "operator": {
                                            "type": "string",
                                            "operation": "equals"
                                        },
                                        "leftValue": "={{ $json.state }}",
                                        "rightValue": "queued"
                                    }
                                ]
                            },
                            "renameOutput": true
                        },
                        {
                            "outputKey": "running",
                            "conditions": {
                                "options": {
                                    "version": 2,
                                    "leftValue": "",
                                    "caseSensitive": true,
                                    "typeValidation": "strict"
                                },
                                "combinator": "and",
                                "conditions": [
                                    {
                                        "id": "fa5d8524-334a-4ab1-b543-bba75cafd0ec",
                                        "operator": {
                                            "name": "filter.operator.equals",
                                            "type": "string",
                                            "operation": "equals"
                                        },
                                        "leftValue": "={{ $json.state }}",
                                        "rightValue": "running"
                                    }
                                ]
                            },
                            "renameOutput": true
                        },
                        {
                            "outputKey": "failed",
                            "conditions": {
                                "options": {
                                    "version": 2,
                                    "leftValue": "",
                                    "caseSensitive": true,
                                    "typeValidation": "strict"
                                },
                                "combinator": "and",
                                "conditions": [
                                    {
                                        "id": "dd853677-c51c-4c06-8680-3c9d1829d6bd",
                                        "operator": {
                                            "name": "filter.operator.equals",
                                            "type": "string",
                                            "operation": "equals"
                                        },
                                        "leftValue": "={{ $json.state }}",
                                        "rightValue": "failed"
                                    }
                                ]
                            },
                            "renameOutput": true
                        }
                    ]
                },
                "options": {
                    "fallbackOutput": 3
                }
            },
            "typeVersion": 3.20000000000000017763568394002504646778106689453125
        },
        {
            "id": "5941496a-a64d-432c-9103-e7bcae4b8d67",
            "name": "in data",
            "type": "n8n-nodes-base.executeWorkflowTrigger",
            "position": [
                100,
                -40
            ],
            "parameters": {
                "workflowInputs": {
                    "values": [
                        {
                            "name": "dag_id"
                        },
                        {
                            "name": "task_id"
                        },
                        {
                            "name": "conf"
                        },
                        {
                            "name": "wait",
                            "type": "number"
                        },
                        {
                            "name": "wait_time",
                            "type": "number"
                        }
                    ]
                }
            },
            "typeVersion": 1.100000000000000088817841970012523233890533447265625
        },
        {
            "id": "e77fed4a-b61a-4126-8be3-43ef8a832cfe",
            "name": "Wait",
            "type": "n8n-nodes-base.wait",
            "position": [
                700,
                -40
            ],
            "webhookId": "3d164954-2926-4174-afc1-261dfdfa9e46",
            "parameters": {
                "amount": "={{ $('in data').item.json.hasOwnProperty('wait') ? $('in data').item.json.wait : 10 }}"
            },
            "typeVersion": 1.100000000000000088817841970012523233890533447265625
        },
        {
            "id": "8ffae842-4400-4667-85bb-50644ef10fc0",
            "name": "If count > wait_time",
            "type": "n8n-nodes-base.if",
            "position": [
                1320,
                140
            ],
            "parameters": {
                "options": [],
                "conditions": {
                    "options": {
                        "version": 2,
                        "leftValue": "",
                        "caseSensitive": true,
                        "typeValidation": "strict"
                    },
                    "combinator": "and",
                    "conditions": [
                        {
                            "id": "1829d538-5633-4f5c-ad1b-285b084b35ee",
                            "operator": {
                                "type": "number",
                                "operation": "gt"
                            },
                            "leftValue": "={{ $json.count }}",
                            "rightValue": "={{ $('in data').item.json.hasOwnProperty('wait_time') ? $('in data').item.json.wait_time : 12 }}"
                        }
                    ]
                }
            },
            "typeVersion": 2.20000000000000017763568394002504646778106689453125
        },
        {
            "id": "c49d4a1b-6f25-471b-9c21-d3defb709dda",
            "name": "airflow-api",
            "type": "n8n-nodes-base.set",
            "position": [
                240,
                60
            ],
            "parameters": {
                "options": [],
                "assignments": {
                    "assignments": [
                        {
                            "id": "40a5ab5b-dee1-44c4-910a-d6b85af75aed",
                            "name": "prefix",
                            "type": "string",
                            "value": "https:\/\/airflow.example.com"
                        }
                    ]
                }
            },
            "typeVersion": 3.399999999999999911182158029987476766109466552734375
        }
    ],
    "active": false,
    "pinData": {
        "in data": [
            {
                "json": {
                    "conf": "{\n  \"image\": \"nginx\",\n  \"tag\": \"latest\",\n  \"tag_requested\": 1000\n}",
                    "wait": 10,
                    "dag_id": "image_tag_related",
                    "task_id": "image_tag_related",
                    "wait_time": 18
                }
            }
        ]
    },
    "settings": {
        "executionOrder": "v1"
    },
    "versionId": "57fdbcfc-7950-4aff-9ac7-3c2a99a2c8c8",
    "connections": {
        "Wait": {
            "main": [
                [
                    {
                        "node": "Airflow: dag_run - state",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "count": {
            "main": [
                [
                    {
                        "node": "If count > wait_time",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "in data": {
            "main": [
                [
                    {
                        "node": "airflow-api",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "airflow-api": {
            "main": [
                [
                    {
                        "node": "Airflow: dag_run",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Switch: state": {
            "main": [
                [
                    {
                        "node": "Airflow: dag_run - get result",
                        "type": "main",
                        "index": 0
                    }
                ],
                [
                    {
                        "node": "count",
                        "type": "main",
                        "index": 0
                    }
                ],
                [
                    {
                        "node": "count",
                        "type": "main",
                        "index": 0
                    }
                ],
                [
                    {
                        "node": "dag run fail",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Airflow: dag_run": {
            "main": [
                [
                    {
                        "node": "if state == queued",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "if state == queued": {
            "main": [
                [
                    {
                        "node": "Wait",
                        "type": "main",
                        "index": 0
                    }
                ],
                [
                    {
                        "node": "dag run fail",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "If count > wait_time": {
            "main": [
                [
                    {
                        "node": "dag run wait too long",
                        "type": "main",
                        "index": 0
                    }
                ],
                [
                    {
                        "node": "Wait",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Airflow: dag_run - state": {
            "main": [
                [
                    {
                        "node": "Switch: state",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Airflow: dag_run - get result": {
            "main": [
                []
            ]
        }
    }
}
Back to Workflows

Related Workflows

Code GitHub Create Scheduled
View
Telegram Splitout Create Webhook
View
screenshot
View
Email Summary Agent
View
youtube chapter generator
View
Limit Code Automation Scheduled
View
Add a datapoint to Beeminder when new activity is added to Strava
View
General 3D Presentation
View
Wait Splitout Create Webhook
View
Send Emails from Obsidian
View