Airflow 气流上升=真

Airflow 气流上升=真,airflow,Airflow,我想知道气流回填到底是如何工作的,因为它可以帮助解释我在气流方面遇到的一些问题。它只是启动某种调度程序过程,不考虑DAG的其余部分,重写StaskDead和EnthDead?还是说不止这些 我的用例:有时我想为一个DAG重新运行一周,通常是在我添加一些新特性时。为此,我使用CLI(清除)来清除任务实例中所需日期。但有时,我可能会改变主意,认为这周不是重播的时候。因此,我暂停DAG,并使用命令afflow-m将清除的任务实例设置为success 当我这样做时,相关的任务实例就catchup=Tru

我想知道
气流回填
到底是如何工作的,因为它可以帮助解释我在气流方面遇到的一些问题。它只是启动某种调度程序过程,不考虑DAG的其余部分,重写StaskDead和EnthDead?还是说不止这些

我的用例:有时我想为一个DAG重新运行一周,通常是在我添加一些新特性时。为此,我使用CLI(
清除
)来清除任务实例中所需日期。但有时,我可能会改变主意,认为这周不是重播的时候。因此,我暂停DAG,并使用命令
afflow-m
将清除的任务实例设置为success

当我这样做时,相关的任务实例就
catchup=True
行为处于“中断”状态。如果我再次清除它们,它们将永远不会得到调度,尽管它们的DAG运行处于“正在运行”状态(它们保持无状态)。我已经做了几次测试,我90%确定
气流回填
是罪魁祸首


毕竟,我不应该在具有
catchup=True
的DAG上使用
afflow backfill
,这似乎是合乎逻辑的,但这是我为大量任务实例标记成功的唯一方法。有人知道这个命令是否会修改DAG运行的状态,并将其设置为running?我总觉得它取代了它的追赶设置。

好吧,我想我明白了

TL;DR>>调度程序不会运行其DAG run前缀为
backfill\的任务实例

backfill
命令将启动,该命令将为指定日期创建DAG运行。在我的例子中,它实际上会更新这些日期的现有DAG运行。执行此操作时,它会更新这些DAG运行的运行id,将
scheduled\u
前缀替换为
backfill\u
前缀

现在,如果我再次清除DAG运行,任务实例将获得None状态,我的DAG运行将开始运行。但是,当检查任务实例是否应该运行时,调度器不会考虑它们,尽管DAG运行处于运行状态,因为这个DAG运行在其ID中具有<代码> BuffFILIG前缀。
最好在UI中对此有一个注释,而不是通常的“此任务实例已满足所有依赖项,应该很快运行”消息:)

我有一个问题。假设我要为开始日期之后的日期运行回填作业,但该日期没有后续的
计划
手动
运行。回填是否成功运行?(当前它失败,使用
回填前缀覆盖失败的计划/手动运行,没有日志!!)。要成功运行回填(即使对于单个日期:catchup设置为False),我需要了解什么??