【问题标题】:How to set mode=reschedule in SubdagOperator to get rid of deadlock如何在 SubdagOperator 中设置 mode=reschedule 以摆脱死锁
【发布时间】:2021-12-29 09:24:52
【问题描述】:

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

【问题讨论】:

    标签: python-3.x airflow airflow-2.x


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢您的信息。关于 TaskGroup,它的 UI 有一个缺点。与其他操作员不同,它不提供“清除”、“运行”操作来一次性运行下面的所有任务,而是必须清除、运行每个单独的任务。在我们的例子中,我们有多个(> 15)个任务组合在一个 Subdag 中。因此,我们暂时无法转向 TaskGroup
    • 公平点,有一个问题:github.com/apache/airflow/issues/14529 虽然目前似乎没有任何活动。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 2019-02-03
    • 2015-11-26
    • 1970-01-01
    相关资源
    最近更新 更多