From cc4dfc0692a5ddea1c1e241c92f885861ed818b2 Mon Sep 17 00:00:00 2001 From: Maksim Totmin Date: Wed, 8 Apr 2026 18:45:27 +0700 Subject: [PATCH] =?UTF-8?q?fix:=20=D1=83=D0=B1=D1=80=D0=B0=D0=BB=20only=5F?= =?UTF-8?q?failed=20(=D0=BD=D0=B5=20=D0=BF=D0=BE=D0=B4=D0=B4=D0=B5=D1=80?= =?UTF-8?q?=D0=B6=D0=B8=D0=B2=D0=B0=D0=B5=D1=82=D1=81=D1=8F=20=D0=B2=20Air?= =?UTF-8?q?flow=202.9),=20limit=20runs=20=D0=B4=D0=BE=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - only_failed появился в Airflow 2.10+, на 2.9.1 возвращает 400 - limit=1 — берём только последний run для каждого DAG --- airflow_monitor/client.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/airflow_monitor/client.py b/airflow_monitor/client.py index d19c7e8..5ffd20d 100644 --- a/airflow_monitor/client.py +++ b/airflow_monitor/client.py @@ -204,14 +204,14 @@ class AirflowClient: resp = self._request( "GET", f"/dags/{encoded_dag_id}/dagRuns", - params=[("limit", 5), ("order_by", "-start_date")] + params=[("limit", 1), ("order_by", "-start_date")] + [("state", s) for s in states], ) else: resp = self._request( "GET", f"/dags/{encoded_dag_id}/dagRuns", - params={"order_by": "-start_date", "limit": 5}, + params={"order_by": "-start_date", "limit": 1}, ) runs = resp.json().get("dag_runs", []) else: @@ -282,7 +282,7 @@ class AirflowClient: self._request( "POST", f"/dags/{encoded_dag_id}/dagRuns/{encoded_run_id}/clear", - json={"dry_run": False, "only_failed": True}, + json={"dry_run": False}, ) logger.info("Cleared DAG run %s/%s for retry", dag_id, dag_run_id) return True