与 ExternalTask​​Operators 的死锁:为什么、多久以及如何解决这个问题?

Deadlock with ExternalTaskOperators: Why, how often, and how to get around that problem?

我正在实施计划的管道,目前我正在使用 ExternalTaskOperator 来设置 DAG 间依赖关系。我读到 here 如果您不手动提高上游任务的优先级,则可能会出现死锁。

我想知道这种情况有多常见,你如何手动提高不同任务的优先级(许多的源代码,如 Bash 和 Python 操作员,似乎没有priority_level 参数),以及是否有任何其他更好的方法来设置 DAG 间依赖关系。

谢谢

我从未在生产中使用过 ExternalTaskSensor,因此无法评论 死锁发生的频率。但是除了你已经提到的 priority_weight / weight_rule 之外,我可以想出另外 2 种方法来 尝试 克服这个

  • 使用保证集合任务的专用插槽
  • 使用 mode paramSensor 秒 (BaseSensorOperator)