web-dev-qa-db-ja.com

UIからAirflowタスクを停止/強制終了する方法

Airflow UIで実行中のタスクを停止/強制終了するにはどうすればよいですか? LocalExecutorを使用しています。 CeleryExecutorを使用している場合でも、実行中のタスクを強制終了/停止するにはどうすればよいですか?

22
Chetan J

[DAG]画面で、実行中のタスクを確認できます。

enter image description here

「最近のタスク」で実行中のアイコンを押すと、Airflowは「実行中」に等しいDag IdとStateのフィルターを使用して検索クエリを自動的に実行し、タスクインスタンス画面に結果を表示します(参照タブで手動で検索できます) >タスクインスタンス)。

そこで提示されたタスクを選択して、それらを別の状態に設定したり、削除したりできます。

DAGが現在実行されている場合、Airflowスケジューラーは削除したタスクを再び開始することに注意してください。そのため、最初にDAGの状態を変更して停止するか、スケジューラーを停止します(テスト環境で実行している場合)。

13
Jorge Almeida

気流の溝から(@villasv)

優雅ではありませんDAGを停止して(実行中としてマーク解除)、タスクの状態をクリアするか、UIでタスクの状態を削除することもできます。 executorで実際に実行されているタスクは停止しませんただし、executorがデータベースに存在しないことに気付いた場合は強制終了される可能性があります

5
Pablo

PabloとJorgeによって一時停止されているように、Dagを一時停止しても、実行が既に開始されている場合、タスクの実行は停止しません。ただし、UIから実行中のタスクを停止する方法はありますが、少しハックです。

タスクがrunning状態にあるとき、CLEARをクリックできます。これによりjob.kill()が呼び出され、タスクはshut_downに設定され、すぐにup_for_retryに移動されて停止します。

明らかに、AirflowはRunning状態のタスクをクリアすることを意図していませんでしたが、Airflowはそれを無効にしないため、私が提案したように使用することもできます。 AirflowはCLEARup_for_retryなどでfailedを使用することを意味していました...将来、コミュニティはこのバグを使用し(「?」)、「タスクをシャットダウン」ボタンで機能として実装するでしょう。

3
Luis