7

由于数据库关闭,我的一个有许多步骤的 DAG 中途停止了。我想让 DAG 从它停止的地方开始,但我所能做的就是一个接一个地启动 DAG 的各个任务。有没有办法根据已经完成的任务的成功来告诉 Airflow 从它停止的地方启动 DAG?

这是一个示例,其中第一个任务已完成,其余任务已排队或没有状态: 在此处输入图像描述

当我单击单个任务 ( runme_1) 时,我可以重新启动它: 在此处输入图像描述

但是,如果我尝试启动尚未满足其依赖关系的任务(例如run_after_loop),我会看到以下错误消息: 在此处输入图像描述

我希望能够单击任何任务,要求它排队并让所有依赖项以正确的顺序运行。那可能吗?

我正在运行 Airflow 1.9.0。

4

2 回答 2

10

听起来您需要从失败的任务开始 dag。

不要进入 DAG 并单击任务并单击运行,而是转到带有失败任务的 Dag 运行,单击失败的任务并单击清除。

清除任务将重新运行该任务,之后的任何其他任务都将运行。

于 2018-02-14T20:01:46.923 回答
7

要添加到@jhnclvr,您可能还希望:

  1. 转至浏览 > 任务实例,筛选并选择失败的任务,然后删除。这与清除 DAG 图或树视图中的单个任务基本相同。

  2. 转到浏览 > DAG 运行,过滤并选择失败的 DAG,并将状态设置为“正在运行”。如果失败的任务导致 DAG 失败,则需要执行此操作,您将在树视图顶部看到红色圆形圆圈表示,因为如果 DAG 失败,任务将不会自动重新运行。

这将自动触发从第一个不成功任务开始的 DAG 重新运行。

为了尽量减少未来的人工干预,您可能希望为失败的操作员调整配置 - 例如重试、超时、重试延迟等。

于 2018-05-17T21:04:26.163 回答