2017-09-25 34 views
0

我在Airflow中有任务A→B→C,当我运行DAG并完成所有成功时,我希望能够单独清除B(同时将C标记为成功)。 B清除并进入'no_status'状态,但是当我尝试重新运行B时,没有任何反应。我试过--ignore_dependencies,--ignore_depends_on_past和--force,但无济于事。如果C也被清除,那么B似乎只能重新运行,然后所有事情按照预期重新运行。如果标记成功,即使下游清除了上游任务,气流强制重新运行

我希望能够在不更改管道的情况下专门重新运行B的原因是B的一些外部输入可能会稍微改变(文件更改或调整),我想运行它并评估它在重新启动下游任务之前输出(以缓解任何潜在的中断)。

回答

0

如果通过命令行清除,则可以指定要清除哪些任务。

airflow clear your_dag_id --task_regex B --start_date 2017-09-25T17:00:00 --end_date 2017-09-25T17:00:00 

如果你想通过UI要做到这一点,你可以去Browse -> Task Instances找到你想要清除任务实例。从那里删除应该只清除您选择的任务。您还需要转到Browse -> DAG Run并将相关的DAG运行设置为正在运行的状态,以便清除已清除的任务。

+0

按照你的建议,它似乎自动清除有C和重新跑了B,则C.我只是喜欢运行B单独无需重新运行C. – bodihex

0

在UI中,当您清除实例任务时,默认情况下会检查下游情况。

如果取消选中它,它会清除仅此一家,而不是重新运行的任务下游

+0

我试过了,但如果C仍被标记为完成,它将不会重新运行B. – bodihex

相关问题