如何在Airflow UI上停止/终止正在运行的任务?我正在使用LocalExecutor
。
即使我使用CeleryExecutor
,如何杀死/停止正在运行的任务呢?
答案 0 :(得分:10)
在DAGs屏幕中,您可以看到正在运行的任务:
在“近期任务”上按下运行图标,Airflow将自动运行搜索查询,其中Dag Id和State的过滤器等于“正在运行”,并在“任务实例”屏幕上显示结果(您可以在选项卡浏览>任务实例)。
在那里,您可以选择显示的任务并将其设置为其他状态或删除它们。
请注意,如果DAG当前正在运行,Airflow调度程序将再次启动您删除的任务。因此,要么首先通过更改其状态来停止DAG,要么停止调度程序(如果您在测试环境中运行)。
答案 1 :(得分:4)
将任务简单地设置为失败状态将停止正在运行的任务。
[2019-09-17 23:53:28,040] {logging_mixin.py:82} INFO - [2019-09-17 23:53:28,039] {jobs.py:2695} WARNING - State of this instance has been externally set to failed. Taking the poison pill.
[2019-09-17 23:53:28,041] {helpers.py:240} INFO - Sending Signals.SIGTERM to GPID 20977
答案 2 :(得分:3)
来自气流gitter(@villasv)
不优雅,不。您可以停止dag(取消标记为正在运行)并清除任务状态,甚至可以在UI中删除它们。执行程序中的实际运行任务不会停止,但如果执行程序意识到它不再在数据库中,则可能会被终止。
答案 3 :(得分:1)
正如Pablo和Jorge所说,如果执行已经开始,则暂停Dag不会停止执行任务。但是,有一种方法可以从UI停止正在运行的任务,但这有点麻烦。
当任务处于running
状态时,您可以单击CLEAR
,这将调用job.kill()
,任务将设置为shut_down
并移至up_for_retry
立即停止。
很明显,Airflow并不意味着您要清除处于Running
状态的任务,但是由于Airflow并未禁用它,您也可以按照我的建议使用它。气流意味着CLEAR
将与failed
,up_for_retry
等一起使用...在将来,社区可能会使用此bug(?)并将其实现为具有“关闭任务”功能“按钮。
答案 4 :(得分:0)