local Executorは、タスクのスケジューリング中に新しいプロセスを生成します。作成するプロセスの数に制限はありますか。変更する必要がありました。 airflow.cfgのスケジューラの「max_threads」と「parallelism」の違いは何ですか?
parallelism:あまり説明的な名前ではありません。説明では、エアフローインストールの最大タスクインスタンスを設定しますが、これは少し曖昧です-エアフローワーカーを実行する2つのホストがある場合、2つのホストにエアフローがインストールされるので、コンテキストに基づいて2つのインストールが必要ですここでの「インストールごと」とは、「エアフロー状態データベースごと」を意味します。このmax_active_tasksという名前を付けます。
dag_concurrency:コメントに基づく名前にもかかわらず、これは実際にはタスクの同時実行性であり、ワーカーごとです。これにmax_active_tasks_for_workerという名前を付けます(per_workerはワーカーのグローバル設定であることを示唆しますが、異なる値を設定したワーカーをこれに設定できると思います)。
max_active_runs_per_dag:これはちょっと大丈夫ですが、一致するDAG kwargの単なるデフォルト値のように見えるため、 default_max_active_runs_for_dagsのような名前です。では、DAG kwargsに移りましょう。
concurrency:繰り返しますが、このような一般的な名前を持ち、他の場所で別の何かに並行性が使用されるという事実と相まって、これはかなり混乱します。これをmax_active_tasksと呼びます。
max_active_runs:これは私には申し分ありません。
ソース: https://issues.Apache.org/jira/browse/AIRFLOW-57
max_threadsは、ユーザーにCPUの使用をある程度制御します。スケジューラーの並列処理を指定します。
スケジューラのmax_threads
は、スケジューラを並列化するプロセスの数です。 max_threads
はCPUカウントを超えることはできません。 LocalExecutorのparallelism
は、LocalExecutorが実行する同時タスクの数です。スケジューラとLocalExecutorは両方とも、並列処理のためにpythonのマルチプロセッシングライブラリを使用します。