如果前一个 DAG 运行 在最新的 运行 时间仍然 运行ning 时是否有可能杀死它?

Is it possible to kill the previous DAG run if its still running when its time for the latest run?

我们的气流被迫与一家系统非常糟糕的公司进行交互。我们的 DAG 在等待从未真正完成的报告时卡住并不少见。这个 DAG 运行 每天提取相同的信息,所以如果是下一个 运行 的时间,最好干掉最后一个 运行 并继续使用新的。我还没有发现任何说 Airflow 有可以实现这一点的 DAG 论点。是否有针对此行为的快速简单设置,或者是否需要在检查报告是否完整的传感器中逻辑地完成?

如果您的 DAG 每天安排,如何设置 dagrun_timeout to 24 hours? I believe this should in effect kill the previous dag run around when it kicks off a new one. 关于设置 DAG 超时。

或者,您可以使用 PythonOperator,定义您自己的运算符,或者扩展您描述的报告传感器以编程方式终止前一个 DagRun。我相信这看起来像...

  1. 从 Airflow 上下文中获取当前 dag 运行
  2. dag_run.get_previous_dagrun()
  3. 得到前一个天数运行
  4. prev_dag_run.set_state
  5. 设置前一天的状态运行

我的建议是根据这两个选项设置超时。我同意没有特定的 kill_previous_run dag 参数