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

Airflow调度器无法自动调度任务但可手动触发DAG运行求助

Airflow自动调度不触发排查方案

问题背景

基于apache/airflow:2.9.0定制镜像(仅添加Python依赖),通过docker-compose部署,使用LocalExecutor,设置AIRFLOW__CORE__PARALLELISM=2。Webserver可正常访问,调度器状态显示正常,手动触发DAG可运行,但设置1分钟、15分钟调度间隔的DAG无法自动触发,无报错日志。

核心排查点

1. DAG基础配置检查

  • 确认DAG已解除暂停:环境变量AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION=true默认新建DAG为暂停状态,需在WebUI中手动开启目标DAG的启用开关。
  • 修正start_date配置:禁止使用动态值(如datetime.now()),必须设置为固定的过去时间。示例:
    # 错误写法
    start_date = datetime.now()
    # 正确写法
    start_date = datetime(2024, 5, 1)
    
    动态start_date会导致DAG每次解析时更新触发基准时间,调度器无法确定有效触发窗口;未来时间的start_date会延迟触发。
  • 验证schedule_interval格式:1分钟间隔需写为*/1 * * * *,15分钟为*/15 * * * *,确保符合Cron语法规范。

2. Airflow调度配置修正

  • 修复时区拼写错误:你的环境变量中AIRFLOW__CORE__DEFUALT_TIMEZONE存在拼写错误,应为AIRFLOW__CORE__DEFAULT_TIMEZONE。建议明确设置具体时区(如Asia/Shanghai)而非system,避免时区偏差导致调度时间计算错误:
    AIRFLOW__CORE__DEFAULT_TIMEZONE: 'Asia/Shanghai'
    AIRFLOW__WEBSERVER__DEFAULT_UI_TIMEZONE: 'Asia/Shanghai'
    
  • 调整调度器扫描间隔:若DAG配置变更未被及时识别,可临时缩小DAG目录扫描间隔测试:
    AIRFLOW__SCHEDULER__DAG_DIR_LIST_INTERVAL: 10
    
    默认300秒的扫描间隔可能导致新调度配置延迟生效。

3. 数据库与调度器状态核查

  • 查看调度器决策日志:执行命令过滤调度器核心日志,确认是否有调度触发的决策记录:
    docker logs airflow_scheduler | grep -i "scheduling"
    
    若出现Found 0 tasks to schedule,说明调度器未识别到符合条件的触发任务。
  • 查询数据库调度记录:进入PostgreSQL容器检查DAG运行记录和调度器状态:
    # 进入postgres容器
    docker exec -it $(docker ps -q --filter name=postgres) psql -U airflow airflow
    # 查看最近的DAG运行记录
    SELECT dag_id, execution_date, state FROM dag_run ORDER BY execution_date DESC LIMIT 10;
    # 查看调度器运行状态
    SELECT * FROM scheduler_job ORDER BY start_date DESC LIMIT 1;
    
  • 验证数据库连接:确认调度器容器能正常连接数据库:
    docker exec -it airflow_scheduler airflow db check
    

4. DAG文件与权限检查

  • 检查DAG挂载权限:确认本地DAG目录(若挂载)的权限为50000:0,否则调度器无法读取最新配置:
    ls -ld /path/to/your/dags
    
  • 验证DAG解析状态:在调度器容器中列出所有可识别的DAG,确认目标DAG已被正确加载:
    docker exec -it airflow_scheduler airflow dags list
    

5. 其他潜在问题

  • 排查自定义镜像依赖冲突:在容器内对比官方镜像的依赖列表,确认新增Python依赖未与Airflow内置依赖冲突:
    docker exec -it airflow_scheduler pip list
    
  • 检查调度器进程状态:确认airflow scheduler进程未意外退出:
    docker exec -it airflow_scheduler ps aux
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 18:17:39