这通常是由于Airflow中的调度器(scheduler)未执行或执行失败,导致无法将排队的任务分配给可用的工作进程(worker)。为了解决这个问题,可以尝试以下步骤:
airflow scheduler status
如果结果中显示'running”,则调度器正在运行。
airflow scheduler
确认连接到数据库的连接字符串是否正确。可以在'airflow.cfg”文件中查找数据库配置信息。确保连接字符串与数据库相匹配,并且数据库处于运行状态。
删除数据库中的任务元数据(metadata)。在Airflow 2.0.0中,可以使用以下命令删除元数据:
airflow db reset --hard
此命令将删除所有任务元数据并重建Airflow数据库。请注意,这将删除所有历史信息和元数据,包括任务和DAG状态。因此,在执行此命令之前,请备份数据库。
airflow webserver -p 8080 -D
airflow worker -D
请注意,这将在后台运行Airflow web服务器和工作进程。如果不需要在后台运行,请删除'-D”选项。
以上步骤可以解决Airflow任务卡在排队状态而Dags却在运行状态的问题。如果问题仍未解决,请检查系统日志以查看更多详细信息。