我制作了一个非常简单的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仍在运行的问题。之前的运行仅完成,因为我手动将状态标记为成功。 [编辑:我原先写道:“之前的运行只是因为我手动将状态设置为运行而完成。”]
答案 0 :(得分:1)
之前的运行只是因为我手动将状态设置为运行而完成。
您确定您的计划程序正在运行吗?您可以使用$ airflow scheduler
启动它,然后检查scheduler CLI command docs您不必手动将任务设置为正在运行。
这里的代码似乎很好。您可能尝试的一件事是重新启动计划程序。
在Airflow元数据数据库中,DAG运行结束状态与任务运行结束状态断开连接。我之前已经看到过这种情况,但是当它意识到DAG运行中的所有任务都已达到最终状态(成功,失败或跳过)时,它通常会在调度程序的下一个循环中自行解析。
您是否在运行LocalExecutor,SequentialExecutor或其他内容?