在 Airflow 中调度 dag 运行

Kev*_*ash 5 airflow airflow-scheduler

有一个关于 Airflow 的一般查询

是否可以根据另一个 dag 文件的计划安排 dag 文件。

例如,如果我有 2 个 dag,即 dag1 和 dag2。我想看看每次 dag1 成功时我是否可以运行 dag2,否则 dag2 不会运行。这在气流中可能吗?

Ben*_*ory 5

您需要在末尾添加一个TriggerDagRunOperatordag1并将其设置dag2None

另外,如果要为 的输出处理多种情况dag1,可以添加一个BranchPythonOperator以根据其输出创建多个路径。例如,您可以将其设置为在成功时执行 TriggerDagRunOperator 或 Slack 您“警告!DAG1 中的任务失败!” 如果抛出错误(或您想要构建的任何其他逻辑),则使用SlackAPIPostOperator

如果您不关心多个结果,您也可以在 TriggerDagRunOperator 之前使用ShortCircuitOperator来防止它根据dag1输出运行。


and*_*oop 4

是的。您应该使用TriggerDagRunOperator在 dag1 末尾包含一个任务。确保此任务具有触发规则,仅当上游所有其他任务成功时才允许其运行。

另一个答案建议使用 subdags,这些 subdags 可能有一些奇怪的地方,使得它们在复杂的 Airflow 环境中不太理想。