私はいくつかのSubDagOperatorsで構成されるDAGが無期限にハングする問題に遭遇しています。エアフローSubDagOperatorデッドロック
セットアップ: CeleryExecutorの使用。この例では、5つのタスクを同時に実行できる1つのワーカーがいるとします。 問題に遭遇しているDAGは、複数のSubDagOperatorsを並列に実行します。説明のために、すべてのノードがSubDagOperatorである次のグラフを検討してください。
問題:DAGは、DAGの高並列部分での進行を停止します。根本的な原因は、トップレベルのSubDagOperatorsが実行中のタスクに使用できる5つのスロットすべてを占有しているため、それらのSubDagOperators内のいずれのサブタスクも実行できないようです。これらのサブタスクはキューに入れられた状態に固執し、誰も進歩しません。
SubDagOperatorタスクは、タスク実行スロットのための独自のサブタスクと競合しますが、今は私には間違いありません。私が違反しているSubDagOperatorsの作成に関するベストプラクティスはありますか?
私の計画は、現在、SubDagOperators内にカプセル化されているタスクをカプセル化するカスタム演算子を作成することでこの問題を回避することです。他の演算子で構成された演算子を作成することが賢明であるかどうかについて誰かが助言を持っていたかどうか疑問に思っていましたか?
このような並行性のデッドロックに対処する方法は、 'pool'sを使用することですが、回答を書くには十分な経験がありません。 – 7yl4r