【问题标题】:Airflow dag gets stuck after renaming a task重命名任务后 Airflow dag 卡住了
【发布时间】:2018-08-27 03:27:06
【问题描述】:

我在 subdag 中有一个任务(名为 task1),dag 运行已完成。然后我将task1 重命名为task2,并使用'airflow clear' 重新运行之前的dag 运行。然后 subdag 始终处于运行状态。当我放大 subdag 时,我可以看到 subdag 的状态为成功,并且它的所有任务都已成功完成。

subdag 的日志显示 Airflow 仍在等待 task1(但它被标记为“已删除”):

[2018-08-22 23:53:04,032] {base_task_runner.py:95} INFO - Subtask: [2018-08-22 23:53:04,032] {jobs.py:2002} INFO - [backfill progress] | finished run 1 of 1 | tasks waiting: 1 | succeeded: 5 | kicked_off: 0 | failed: 0 | skipped: 5 | deadlocked: 0 | not ready: 0
[2018-08-22 23:53:04,032] {base_task_runner.py:95} INFO - Subtask: [2018-08-22 23:53:04,032] {jobs.py:2006} INFO - Finished dag run loop iteration. Remaining tasks [<TaskInstance: task1 2018-08-08 15:13:02 [removed]>]
[2018-08-22 23:53:09,050] {base_task_runner.py:95} INFO - Subtask: [2018-08-22 23:53:09,049] {jobs.py:2002} INFO - [backfill progress] | finished run 1 of 1 | tasks waiting: 1 | succeeded: 5 | kicked_off: 0 | failed: 0 | skipped: 5 | deadlocked: 0 | not ready: 0
[2018-08-22 23:53:09,050] {base_task_runner.py:95} INFO - Subtask: [2018-08-22 23:53:09,050] {jobs.py:2006} INFO - Finished dag run loop iteration. Remaining tasks [<TaskInstance: task1 2018-08-08 15:13:02 [removed]>]
[2018-08-22 23:53:14,068] {base_task_runner.py:95} INFO - Subtask: [2018-08-22 23:53:14,067] {jobs.py:2002} INFO - [backfill progress] | finished run 1 of 1 | tasks waiting: 1 | succeeded: 5 | kicked_off: 0 | failed: 0 | skipped: 5 | deadlocked: 0 | not ready: 0
[2018-08-22 23:53:14,068] {base_task_runner.py:95} INFO - Subtask: [2018-08-22 23:53:14,068] {jobs.py:2006} INFO - Finished dag run loop iteration. Remaining tasks [<TaskInstance: task1 2018-08-08 15:13:02 [removed]>]
[2018-08-22 23:53:19,083] {base_task_runner.py:95} INFO - Subtask: [2018-08-22 23:53:19,083] {jobs.py:2002} INFO - [backfill progress] | finished run 1 of 1 | tasks waiting: 1 | succeeded: 5 | kicked_off: 0 | failed: 0 | skipped: 5 | deadlocked: 0 | not ready: 0
[2018-08-22 23:53:19,084] {base_task_runner.py:95} INFO - Subtask: [2018-08-22 23:53:19,083] {jobs.py:2006} INFO - Finished dag run loop iteration. Remaining tasks [<TaskInstance: task1 2018-08-08 15:13:02 [removed]>]

我正在使用 apache-airflow 1.8.1。 我现在该怎么办?

【问题讨论】:

    标签: airflow


    【解决方案1】:

    您可以在不使用子 dag 的情况下重新创建错误吗? Airflow 将每个 subdag 视为一个顶点而不是整个图,因此当您更改一个任务时,它会更新 subdag,但该更改不会传播回父 DAG。

    Airflow 处理 subdag 的方式可能会产生意想不到的后果,因此大多数社区都建议远离它们。

    【讨论】:

    • 谢谢,但我非常依赖 subdag。我不能轻易改变它。
    【解决方案2】:

    您必须更改子标签的名称。由于 Airflow 将 DAG 的信息保存在元数据数据库中,因此每次对 DAG 进行重大更改时,都需要更改 DAG 名称。

    这就是 DAG 的命名约定为 my_dag_v1 的原因,这样您每次进行更改时都可以方便地更新 v 编号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-16
      • 1970-01-01
      • 1970-01-01
      • 2017-11-07
      • 2015-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多