【问题标题】:Airflow - pause/unpause individual dagruns of the same DAG running in parallelAirflow - 暂停/取消暂停并行运行的同一 DAG 的各个 dagrun
【发布时间】:2020-08-28 04:20:54
【问题描述】:

我们目前正在评估一个项目的气流。我想知道是否有办法在并行运行 DAG 的同时停止/启动单个 dagruns。 dag_id 上的暂停/取消暂停似乎暂停/取消暂停 dag 下的所有 dagrun。相反,我们想暂停单个 dagruns(或其中的任务)。让我知道这是否可以在气流中实现。

如果不可能,这里有我正在考虑的其他替代方案,让我知道你对这些的看法

  1. 更改任务状态。 – 将 dagrun 下的所有任务更改为标记失败或成功。这样,特定的 dagrun 就会停止在其轨道上,而不会影响其他 dagrun。
  2. 气流传感器从 s3 或 http 或 sql 或某处提取此信息以暂停当前 dagrun。如果需要停止这个 dagrun(而不是其他 dagrun),并且每次都检查 s3。
  3. 子目录。 - 我们可以暂停/取消暂停 subdags。这样,对于我们想要执行的每个并行用户的请求,我们都会发出一个 subdag,我们可以暂停 userAs subdag 而不会影响其他用户的 subdag。

【问题讨论】:

  • 这个问题已被问到earlier,但我怀疑是否有本地解决方案

标签: airflow


【解决方案1】:

Airflow 中没有任何“烘焙”来支持这一点,但您可以(ab)使用 DagRun 的状态,将其更改为 "failed" 暂停,然后返回 "running" 以恢复;您将无法全面取消暂停,但为了测试它应该是可行的。

【讨论】:

  • 谢谢@joebeeson。你知道是否有办法通过 REST API 或 CLI 将 dagrun 标记为“失败”?我看到有“气流运行”允许我们将任务标记为“成功”,但无论如何都没有看到推销任务或 dagrun“失败”。
  • 经过一番挖掘,我能够更新 task_instance 表中该 execution_date 的“失败”状态的行,这似乎反映了该特定 dagrun 下该任务的 UI 罚款。在 CLI 中找不到该选项。但是,我能够从 CLI 运行该任务而忽略所有依赖项(选项 -A)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多