气流:简单的DAG,一项任务永远不会完成

时间:2018-04-02 13:22:08

标签: airflow airflow-scheduler

我制作了一个非常简单的DAG,如下所示:

from datetime import datetime
from airflow import DAG
from airflow.operators.bash_operator import BashOperator

cleanup_command = "/home/ubuntu/airflow/dags/scripts/log_cleanup/log_cleanup.sh "

dag = DAG(
'log_cleanup',
description='DAG for deleting old logs',
schedule_interval='10 13 * * *',
start_date=datetime(2018, 3, 30),
catchup=False,
)

t1 = BashOperator(task_id='cleanup_task', bash_command=cleanup_command, dag=dag)

任务成功完成但尽管如此,DAG仍处于“运行”状态。知道是什么原因造成的。下面的屏幕截图显示了DAG仍在运行的问题。之前的运行仅完成,因为我手动将状态标记为成功。 [编辑:我原先写道:“之前的运行只是因为我手动将状态设置为运行而完成。”]

Screenshot showing that status of task is finished but DAG is still running

1 个答案:

答案 0 :(得分:1)

  

之前的运行只是因为我手动将状态设置为运行而完成。

您确定您的计划程序正在运行吗?您可以使用$ airflow scheduler启动它,然后检查scheduler CLI command docs您不必手动将任务设置为正在运行。

这里的代码似乎很好。您可能尝试的一件事是重新启动计划程序。

在Airflow元数据数据库中,DAG运行结束状态与任务运行结束状态断开连接。我之前已经看到过这种情况,但是当它意识到DAG运行中的所有任务都已达到最终状态(成功,失败或跳过)时,它通常会在调度程序的下一个循环中自行解析。

您是否在运行LocalExecutor,SequentialExecutor或其他内容?