【发布时间】:2017-09-23 17:00:42
【问题描述】:
如何停止/终止 Airflow UI 上正在运行的任务?我正在使用LocalExecutor。
即使我使用CeleryExecutor,我如何才能杀死/停止正在运行的任务?
【问题讨论】:
如何停止/终止 Airflow UI 上正在运行的任务?我正在使用LocalExecutor。
即使我使用CeleryExecutor,我如何才能杀死/停止正在运行的任务?
【问题讨论】:
来自气流 gitter (@villasv)
" 不优雅,不。您可以停止 dag(取消标记为正在运行)并清除 任务在 UI 中声明甚至删除它们。实际运行 执行器中的任务不会停止,但如果 executor 意识到它不在数据库中了。 "
【讨论】:
只需将任务设置为失败状态即可停止正在运行的任务。
[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
【讨论】:
正如 Pablo 和 Jorge 所提到的,如果执行已经开始,暂停 Dag 不会停止执行任务。然而,有一种方法可以从 UI 停止正在运行的任务,但它有点 hacky。
当任务处于running 状态时,您可以单击CLEAR 这将调用job.kill(),任务将设置为shut_down 并立即移动到up_for_retry,因此它会停止。
显然 Airflow 并不意味着您可以清除 Running 状态下的任务,但是由于 Airflow 没有禁用它,所以您可以按照我的建议使用它。 Airflow 意味着CLEAR 与failed、up_for_retry 等一起使用......也许将来社区会使用这个错误(?)并将其作为“关闭任务”按钮的功能来实现。
【讨论】:
在 DAG 屏幕中,您可以看到正在运行的任务:
在“最近的任务”上按运行图标,Airflow 将自动运行搜索查询,其中 Dag Id 和状态的过滤器等于“正在运行”,并在“任务实例”屏幕上显示结果(您可以在选项卡浏览 > 任务实例)。
您可以在此处选择呈现的任务并将它们设置为另一种状态或删除它们。
请注意,如果 DAG 当前正在运行,Airflow 调度程序将重新启动您删除的任务。因此,要么先通过更改状态来停止 DAG,要么停止调度程序(如果您在测试环境中运行)。
【讨论】: