2016-10-04 24 views
1

気流1.7.1.3を使用しています。気流は `LocalExecutor`との同時DAGを引き起こさない

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

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

詳細については、ECSクラスタで動作するコンテナにエアフローを導入しました。 max_threads = 2と2つのCPUしか使用できません。

アイデア?ありがとう

答えて

0

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

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

関連する問題