You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Airflow 1.8.1任务处于scheduled状态但调度器未拾取问题咨询

Airflow 1.8.1: 清理任务后处于"scheduled"状态但调度器不拾取的问题排查与解决

我之前帮同事排查过Airflow 1.8.1里的这个问题,确实是这个老版本的一个常见状态同步bug——当你清理运行中的任务时,元数据库里的任务状态可能没有正确更新,导致调度器“看不到”处于scheduled状态的任务。下面是几个经过验证的处理方式:

1. 手动修正任务实例的数据库状态

Airflow 1.8.x的调度器依赖元数据库(比如PostgreSQL/MySQL)里的task_instance表来识别待执行任务。你可以直接进入数据库执行更新:

  • 先定位目标任务的记录:
    SELECT * FROM task_instance WHERE dag_id = '你的DAG_ID' AND task_id = '你的任务ID' AND execution_date = '任务的执行时间';
    
  • 将状态改为queued,让调度器能立刻拾取:
    UPDATE task_instance SET state = 'queued' WHERE dag_id = '你的DAG_ID' AND task_id = '你的任务ID' AND execution_date = '任务的执行时间';
    

2. 用命令行工具强制重新触发

如果不想直接操作数据库,可以用Airflow的命令行工具重新触发任务:

  • 清理并重置任务的运行状态:
    airflow clear -s <任务开始时间> -e <任务结束时间> -t <任务ID> <DAG_ID> --reset_dag_runs
    
  • 或者直接触发指定的DAG运行:
    airflow trigger_dag -r <目标运行的run_id> <DAG_ID>
    

3. 重启Airflow调度器和Worker

老版本的Airflow调度器可能会缓存任务状态,重启后会重新读取元数据库的最新状态,大概率能拾取到scheduled状态的任务:

# 重启调度器
sudo service airflow-scheduler restart
# 重启Worker(如果使用CeleryExecutor)
sudo service airflow-worker restart

4. 检查任务的基础配置

最后再确认几个容易被忽略的点:

  • 任务所在的DAG没有被暂停(在Airflow UI里查看DAG的开关是否处于开启状态)
  • 任务没有未完成的上游依赖
  • schedule_interval配置正确,没有设置成过去的时间导致调度器跳过

另外提一句,这个状态同步的问题在Airflow 1.10.x及以上的版本已经被官方修复了,如果你们的业务允许,升级到更高版本是一劳永逸的解决方案。

内容的提问来源于stack exchange,提问作者Chengzhi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:11:32