【发布时间】:2019-06-22 15:13:48
【问题描述】:
我想知道airflow backfill 究竟是如何工作的,因为它有助于解释我在使用 Airflow 时遇到的一些问题。它只是启动某种不考虑其余 DAG 并覆盖 start_date 和 end_date 的调度程序进程吗?还是不止这些?
我的用例:有时我想为一个 DAG 重新运行一周,通常是在我向它添加一些新功能时。为此,我使用 CLI (airflow clear) 清除所需日期的任务实例。但有时,我可能会改变主意,认为这周不是重播的合适时间。所以我暂停 DAG,并使用命令airflow backfill -m 将清除的任务实例设置为成功。
当我这样做时,相关的任务实例会进入关于 catchup=True 行为的“损坏”状态。如果我再次清除它们,它们将永远不会被安排,尽管它们的 DAG 运行处于“运行”状态(它们保持无状态)。我进行了几次测试,我 90% 确定 airflow backfill 是罪魁祸首。
毕竟,我不应该在具有 catchup=True 的 DAG 上使用 airflow backfill 似乎是合乎逻辑的,但这是我为大量任务实例标记成功的唯一方法。有人知道此命令是否会修改 DAG 运行的状态,将其设置为运行?不知何故,我感觉它取代了它的追赶设置。
【问题讨论】:
标签: airflow