2

気流 1.7.1.3 を使用しています。

同時実行 DAG / タスクに問題があります。DAG が実行されている場合、スケジューラは他の DAG を起動しません。スケジューラは完全にフリーズしているようです (ログはもうありません) ... 実行中の DAG が終了するまで。次に、新しい DAGrun がトリガーされます。私のさまざまなタスクは長時間実行される ECS タスクです (~10 分)

私は使用LocalExecutorし、 と についてデフォルトの設定をparallelism=32dag_concurrency=16ました。airflow scheduler -n 20自動的に使用して再起動し'depends_on_past': False、すべての DAG 宣言を設定します。

参考までに、ECS クラスターで実行されているコンテナーにエアフローをデプロイしました。max_threads = 2利用可能なCPUは2つしかありません。

何か案は ?ありがとう

4

1 に答える 1

2

を使用して、この問題にも遭遇しましたLocalExecutor。動作に制限があるようLocalExecutorです。スケジューラは、最終的に子プロセスを生成します (この場合は 32)。さらに、スケジューラは実行ごとに 20 回の反復を実行するため、20 回の実行が終了するまでに、スケジューラが終了する前に子プロセスが終了するのを待ちます。実行時間の長い子プロセスがある場合、スケジューラはその実行でブロックされます。

私たちにとっての解決策は、に切り替えることでしたCeleryExecutor。もちろん、これには Celery バックエンドのインフラストラクチャ、管理、および全体的な複雑さがもう少し必要です。

于 2016-11-13T00:43:22.090 に答える