如何在 SubdagOperator 中设置 mode=reschedule 以摆脱死锁

How to set mode=reschedule in SubdagOperator to get rid of deadlock

我在 Airflow 2 SubdagOperator 文档 link 中看到,使用 mode = reschedule 我们可以摆脱潜在的死锁。 据我了解,它不是可以与其他参数列表一起传递的参数。如果有人用过这个让我知道如何将它合并到 SubdagOperator 中。

从技术上讲,SubDagOperator 是一个传感器,它可以接受一个参数 mode="reschedule"。默认模式 poke 保持插槽打开,如果您使用大量传感器,这可能会导致死锁情况。模式 reschedule 而是停止进程并在每次检查时创建一个新进程,而不会导致所有插槽都被相互等待的传感器占用的情况。

SubDagOperator(task_id="foobar", ..., mode="reschedule")

话虽如此,自 Airflow 2.0 以来不推荐使用 SubDagOperator,建议使用 TaskGroups。 TaskGroups 是一种在 DAG 中将任务组合在一起的可视化方式(教程在这里:https://www.astronomer.io/guides/task-groups)。

或者,您可以使用 TriggerDagRunOperator 触发另一个 DAG(教程:https://www.astronomer.io/guides/cross-dag-dependencies)。