CLI 用来做什么
airflow 命令行是排障与操作的主要入口:列出 DAG、查看某次运行里各任务的状态、在本地单独试跑某个任务、按区间回填、清理历史记录。相比在网页上点按钮,CLI 的操作可复制、可留痕,出问题时也更容易复现;值班手册里应该写命令而不是「打开界面点这里」。
基本信息
| 看 DAG | airflow dags list / dags list-import-errors |
|---|---|
| 看运行 | airflow tasks states-for-dag-run |
| 本地试跑 | airflow tasks test <dag> <task> <日期> |
| 回填 | airflow dags backfill -s -e |
| 数据库维护 | airflow db 相关子命令 |
| 版本差异 | 不同大版本的命令分组有调整,执行前用 --help 核对 |
排障四连
排障四连
airflow dags list | grep daily_orders
airflow dags list-import-errors
airflow tasks test daily_orders extract 2026-10-11
airflow tasks states-for-dag-run daily_orders manual__2026-10-11T00:00:00+00:00典型使用场景
- DAG 没出现:用 list-import-errors 看解析失败原因
- 任务失败定位:查该次运行里每个任务的状态与耗时
- 本地验证逻辑:tasks test 单独跑一个任务确认参数与路径
- 受控补数:按区间回填并在命令里限制并发
- 清理与维护:删除过期运行记录、重建元数据表结构
- 批量操作:按 DAG 或标签批量暂停与恢复,发版窗口前统一停调度
- 环境核对:确认 CLI 连接的是哪套元数据库,避免在生产上误操作
常用命令读法
| 命令 | 作用 | 说明 |
|---|---|---|
| dags list | 列出所有可调度 DAG | 只显示被成功解析的 |
| dags list-import-errors | 列出解析失败的 DAG | 语法与依赖问题首查 |
| tasks test | 本地执行单个任务 | 不写调度状态 |
| tasks states-for-dag-run | 查看某次运行的任务状态 | 定位卡在哪个任务 |
| dags backfill | 按区间回填 | 需配合并发限制 |
tasks test 在本地直接执行任务函数、不写调度状态,用来验证逻辑;正式运行仍由 scheduler 发起。
CLI 需要能读到与调度器相同的配置与元数据库,通常在有 Airflow 环境变量的机器上执行;在错误的机器上跑会出现「看不到任何 DAG」这种迷惑现象。
删除运行记录、清理历史之类的命令会直接改元数据库,执行前先确认连接的库是测试还是生产,必要时先做备份。