事实核验:2026-08-12 · 状态:维护中

记录仅说明核验时间与维护状态,不保证适用于所有环境;使用前请留意正文中的版本、适用条件与风险提示。

warning 适用范围与待维护事项

本文用于隔离环境中的安装与兼容验证,不是生产部署手册。原稿标注的 Airflow 3.3.0、Python 3.10~3.14 支持范围、凭据路径及健康接口行为尚未在本轮核验;stable 文档链接也不能证明指定版本。Legacy 示例存在 SQLAlchemy 依赖冲突、配置解释错误及 constraints 占位符,不能直接执行或混用于 3.x。默认口令与暴露端口仅限受控本地环境;真实 DAG、数据库迁移、故障注入和回滚练习须在隔离环境保留验收证据。

Airflow 3.3 安装部署

abstract 本文核心内容

  • Airflow 3.3 的可重复安装基线
  • Docker Compose 快速体验与生产边界
  • 从 Airflow 2.x 升级到 3.x 的关键门禁
  • 原 Airflow 2.8.1 命令的 Legacy 参考

danger 版本边界

本文原有命令全部基于 Airflow 2.8.1,因维护规则不改动现有代码块而保留。它们不是 Airflow 3.3 的当前安装方案。执行任何命令前先确认所在章节是“当前基线”还是“Legacy 2.8.1”。


Airflow 3.3 当前基线

截至 2026-08-12,官方稳定文档为 Airflow 3.3.0,支持 Python 3.10~3.14。PyPI 可重复安装需要为 Airflow 版本和当前 Python 小版本使用对应的官方 constraints 文件。

本地验证的最短路径:

pipx run "apache-airflow==3.3.0" standalone

成功信号是进程持续运行、能够取得 Simple Auth Manager 生成的本地凭据,并且浏览器可以打开 Web UI。凭据可能显示在终端,也可能写入 $AIRFLOW_HOME/simple_auth_manager_passwords.json.generated;以当前命令输出和生成文件为准。若命令非零退出、凭据无法取得、端口无法访问或日志持续出现数据库迁移失败,则本地验证不通过。Standalone 会同时启动多个组件,只用于学习和本地功能验证,不是生产部署方式。

需要可重复环境时:

python3 -m venv .venv
. .venv/bin/activate

AIRFLOW_VERSION=3.3.0
PYTHON_VERSION="$(python -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')"
CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt"
python -m pip install --upgrade pip
python -m pip install "apache-airflow[celery]==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}"

创建虚拟环境的解释器必须位于上文支持范围内。激活后用同一个 python 生成 constraints 地址、调用 pip 和执行依赖检查,避免把一个 Python 小版本的约束文件装进另一个解释器或现有业务环境。

安装后至少执行版本与依赖一致性检查:

airflow version
python -m pip check

预期 Airflow 版本为 3.3.0,且依赖检查不报告冲突。这里验证的是“软件能够安装”,不代表数据库、Executor、Provider 或 DAG 已经完成生产验收。

Docker Compose 完整快速验证路径:

set -euo pipefail

mkdir -p airflow-3.3-compose
cd airflow-3.3-compose

curl -LfO 'https://airflow.apache.org/docs/apache-airflow/3.3.0/docker-compose.yaml'
mkdir -p ./dags ./logs ./plugins ./config

if [ "$(uname -s)" = "Linux" ]; then
  printf 'AIRFLOW_UID=%s\n' "$(id -u)" > .env
else
  printf 'AIRFLOW_UID=50000\n' > .env
fi

docker compose up --abort-on-container-exit --exit-code-from airflow-init airflow-init
docker compose up -d --wait --wait-timeout 180
docker compose ps
curl -fsS 'http://localhost:8080/api/v2/monitor/health'

Linux 必须把宿主用户 UID 写入 .env,否则挂载目录可能由 root 创建;macOS 等其他系统可忽略未设置警告,示例写入官方建议的默认 UID 以消除警告。初始化命令用 --exit-code-from airflow-init 把一次性容器的退出码传回 Shell,失败时 set -e 会停止后续启动;不要移除这一门禁。--wait 会等待其余服务进入运行或健康状态,并在 180 秒后超时;这消除了首次启动后立即请求 API Server 的竞态,超时退出时应先检查容器状态与日志。

快速验证的通过标准:

检查对象 通过条件 失败处理
初始化容器 airflow-init 正常退出,日志没有迁移或账号创建错误 先查看初始化日志,不继续启动其余服务
Compose 服务 API Server、Scheduler、DAG Processor、Worker、Triggerer、PostgreSQL、Redis 均为运行或健康状态 查看对应服务日志,确认内存、目录权限与依赖状态
健康接口 返回 JSON,MetaDB、Scheduler、Triggerer 和 DAG Processor 的状态均符合当前拓扑预期 不能只看 HTTP 200;官方说明 HTTP 状态码只表示接口请求本身成功
Web UI 本机 8080 端口可访问,并能使用 quick-start 凭据登录 检查 API Server 端口、认证服务和容器健康状态

warning Docker Compose 不是生产参考架构

官方明确把该 Compose 环境定义为 quick-start,并说明它不是为生产设计的。它适合学习、兼容验证和小型开发环境;生产部署还需要独立完成高可用、备份恢复、密钥、认证授权、日志、监控、升级回滚和容量验收。

本地验证与生产验收的边界

层级 本文可以证明什么 仍需单独验收什么
Standalone Airflow 3.3 能在本机启动,UI 和基础组件可访问 真实数据库、Executor、认证、容量与故障恢复
Docker Compose quick-start 官方示例拓扑能运行,DAG 与 Provider 可做兼容测试 高可用、密钥管理、备份恢复、滚动升级、日志持久化和资源隔离
生产发布 不由本文中的本地命令直接证明 组织级架构评审、恢复演练、容量压测、安全检查、DAG 回归、可观测性和回滚演练全部通过

生产门禁应保存可追溯证据:Airflow 与 Provider 锁定版本、镜像摘要、数据库迁移记录、关键 DAG 回归结果、容量和恢复测试报告、权限矩阵、告警演练及回滚记录。任何一项缺失,都不能用“本地启动成功”替代。

从 2.x 升级到 3.3 的门禁

  1. 先升级到至少 2.7,推荐先到最新 2.x,再进入 3.x。
  2. 停写或保证一致性后备份 MetaDB,并在大库上评估清理和迁移耗时。
  3. 使用官方 AIR 规则检查 DAG,迁移已移除的 API 与导入路径。
  4. 检查自定义 Task 是否直接访问 Airflow MetaDB;Airflow 3 的 Worker 通过 API Server 与运行时资源交互。
  5. 数据库迁移使用 Airflow 3 的 db migrate 命令,并准备可验证的回滚点。
  6. 启动脚本必须包含 API Server 和独立 DAG Processor,不能继续把旧 Webserver 拓扑当作 3.x 架构。
  7. 验证认证管理器、API v2、Provider 兼容性、历史 DAG 回放和关键告警后再切流。

三种安装方式对比

方式 适用场景 优点 缺点
pip 安装 本地快速体验 命令链较短 环境依赖多,隔离性差
Docker Compose 学习/开发/兼容测试 一键部署,环境隔离 官方 quick-start 不适合作为生产架构
Helm(Kubernetes) 大规模生产 弹性伸缩,云原生 复杂,需要 K8s 经验

推荐路径:本地 standalone → Docker Compose 兼容验证 → 依据组织平台能力选择 Helm、托管服务或经过正式设计的容器部署


Legacy 2.8.1:pip 安装

warning 历史命令

下方 Python 范围、初始化命令、Webserver 启动方式和版本号都属于 Airflow 2.8.1。学习 Airflow 3.3 请使用前面的当前基线。

适合在本地快速跑通第一个 DAG,不适合生产使用。

环境要求

  • Python 3.8 ~ 3.11
  • pip 21.0+

安装步骤

# 1. 创建虚拟环境(强烈建议,避免依赖冲突)
python3 -m venv airflow_env
source airflow_env/bin/activate  # Linux/macOS
# airflow_env\Scripts\activate   # Windows

# 2. 设置 Airflow 主目录
export AIRFLOW_HOME=~/airflow

# 3. 安装 Airflow(指定版本和约束文件,避免依赖冲突)
AIRFLOW_VERSION=2.8.1
PYTHON_VERSION=$(python3 -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')")
CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt"

pip install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}"

# 4. 初始化数据库(默认 SQLite)
airflow db init

# 5. 创建管理员账号
airflow users create \
    --username admin \
    --firstname Admin \
    --lastname User \
    --role Admin \
    --email admin@example.com \
    --password admin123

# 6. 启动(两个终端分别运行)
airflow scheduler &
airflow webserver --port 8080

访问 http://localhost:8080,用 admin/admin123 登录。

warning SQLite 的限制

pip 安装默认使用 SQLite,只支持 SequentialExecutor(串行执行)。 这意味着该 Legacy 配置同一时刻只能跑一个 Task,仅供学习用。生产应换用该 Airflow 版本支持的外部数据库,本文以 PostgreSQL 为例。


Legacy 2.8.1:Docker Compose 部署

warning 历史命令与拓扑

下方下载地址、镜像、服务名称和 Webserver 拓扑都属于 2.8.1。即使能够启动,也不代表已经完成 Airflow 3.3 兼容或生产验收。

原文曾把这一 2.8.1 Compose 拓扑作为入门路径;当前学习与兼容验证应使用前文的 Airflow 3.3 quick-start。

前置条件

  • Docker 20.10+
  • Docker Compose 2.0+
  • 内存 4GB+(建议 8GB)

参考 Docker Compose 入门 了解 Docker Compose 基础。

快速部署步骤

# 1. 创建项目目录
mkdir ~/airflow-docker && cd ~/airflow-docker

# 2. 下载官方 docker-compose.yaml(Airflow 2.8)
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.8.1/docker-compose.yaml'

# 3. 创建必要的目录
mkdir -p ./dags ./logs ./plugins ./config

# 4. 设置 AIRFLOW_UID(Linux 必须,macOS 可选)
echo -e "AIRFLOW_UID=$(id -u)" > .env

# 5. 初始化数据库(仅第一次需要)
docker compose up airflow-init

# 6. 等待初始化完成后,启动所有服务
docker compose up -d

# 7. 查看服务状态
docker compose ps

正常启动后,应该看到以下服务都是 healthy 状态:

NAME                        STATUS
airflow-docker-airflow-scheduler-1   Up (healthy)
airflow-docker-airflow-webserver-1   Up (healthy)
airflow-docker-airflow-worker-1      Up (healthy)
airflow-docker-airflow-triggerer-1   Up (healthy)
airflow-docker-postgres-1            Up (healthy)
airflow-docker-redis-1               Up (healthy)

访问 http://localhost:8080,默认账号 airflow / airflow。

docker-compose.yaml 关键配置解读

# 节选自官方 docker-compose.yaml,添加了注释

version: '3.8'

x-airflow-common:
  &airflow-common
  # 使用官方镜像,可以换成自定义镜像
  image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.8.1}
  environment:
    &airflow-common-env
    # 核心配置:使用 Celery 执行器(支持分布式)
    AIRFLOW__CORE__EXECUTOR: CeleryExecutor

    # 数据库连接(PostgreSQL)
    AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow

    # Celery 消息队列(Redis)
    AIRFLOW__CELERY__RESULT_BACKEND: db+postgresql://airflow:airflow@postgres/airflow
    AIRFLOW__CELERY__BROKER_URL: redis://:@redis:6379/0

    # 安全配置(生产环境必须修改!)
    AIRFLOW__CORE__FERNET_KEY: ''
    AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION: 'true'  # 新DAG默认暂停
    AIRFLOW__CORE__LOAD_EXAMPLES: 'false'               # 不加载示例DAG

    # Webserver 签名密钥,不是开启用户名密码登录的开关
    AIRFLOW__WEBSERVER__SECRET_KEY: ''

  volumes:
    # DAG 文件目录挂载到容器(在这里写 DAG 文件)
    - ${AIRFLOW_PROJ_DIR:-.}/dags:/opt/airflow/dags
    # 日志目录挂载(查看任务日志)
    - ${AIRFLOW_PROJ_DIR:-.}/logs:/opt/airflow/logs
    # 插件目录
    - ${AIRFLOW_PROJ_DIR:-.}/plugins:/opt/airflow/plugins

自定义镜像(安装额外依赖)

如果你的 DAG 需要额外的 Python 包(比如 pandas、sqlalchemy),需要构建自定义镜像:

# Dockerfile
FROM apache/airflow:2.8.1

# 安装额外依赖
COPY requirements.txt /requirements.txt
RUN pip install --no-cache-dir -r /requirements.txt
# requirements.txt
pandas==2.1.0
sqlalchemy==2.0.0
apache-airflow-providers-mysql==5.5.0
apache-airflow-providers-apache-hive==7.0.0
apache-airflow-providers-apache-spark==4.3.0
# docker-compose.override.yaml(覆盖官方配置)
version: '3.8'
services:
  airflow-webserver:
    build: .
  airflow-scheduler:
    build: .
  airflow-worker:
    build: .
# 重新构建并启动
docker compose build
docker compose up -d

Legacy 2.x:airflow.cfg 配置示例

warning 配置项需逐项映射

Airflow 3 将 Webserver 改为 API Server,部分配置节已重命名或移除。下方配置只用于理解 2.x,不应整段复制到 3.3。

airflow.cfg 是 Airflow 的主配置文件,位于 $AIRFLOW_HOME/airflow.cfg。

在 Docker 部署中,推荐用环境变量覆盖配置(AIRFLOW__SECTION__KEY 格式),而不是直接修改 cfg 文件。

核心配置项解读

[core]
# DAG 文件目录(Scheduler 会扫描这个目录下的所有 .py 文件)
dags_folder = /opt/airflow/dags

# 并行执行的 Task 数量上限(全局)
parallelism = 32

# 每个 DAG 最多同时运行的 Task 数量
max_active_tasks_per_dag = 16

# 每个 DAG 最多同时运行的 DAG Run 数量
max_active_runs_per_dag = 16

# 使用的 Executor 类型
executor = CeleryExecutor

# 是否加载内置示例 DAG(生产环境建议关闭)
load_examples = False

# 新创建的 DAG 是否默认暂停
dags_are_paused_at_creation = True

[database]
# MetaDB 连接字符串
sql_alchemy_conn = postgresql+psycopg2://airflow:password@localhost:5432/airflow

# 数据库连接池大小
sql_alchemy_pool_size = 5
sql_alchemy_pool_recycle = 1800

[scheduler]
# Scheduler 扫描 DAG 目录的间隔(秒)
dag_dir_list_interval = 30

# 同一 DAG 文件两次解析之间的最小间隔(秒),不是 Task 调度间隔
min_file_process_interval = 30

# Scheduler 心跳间隔(秒)
scheduler_heartbeat_sec = 5

[webserver]
# Web 服务监听端口
web_server_port = 8080

# Webserver worker 超时时间(秒),不是用户 Session 超时
web_server_worker_timeout = 120

# 历史原稿配置:authenticate 不是 Airflow 2.8.1 的有效登录控制项
# authenticate = True
# 登录与访问权限应通过该版本的认证机制配置并验证

[celery]
# 每个 Celery Worker 的并发执行槽位数,不是 Worker 实例数量
worker_concurrency = 16

# 消息队列地址
broker_url = redis://localhost:6379/0
result_backend = db+postgresql://airflow:password@localhost:5432/airflow

Legacy 2.x:从 SQLite 到 PostgreSQL

warning 原则仍有效,命令已过时

生产使用受支持的外部数据库这一原则仍然成立,但下方 init 命令与版本依赖属于 2.x;Airflow 3 的升级迁移使用 db migrate。

为什么要换 PostgreSQL

特性 SQLite PostgreSQL
并发写入 不支持 支持
支持的 Executor 仅 Sequential 所有 Executor
连接与写入限制 可有多个连接,但同时仅允许一个写者 可有多个连接,连接数上限取决于配置与资源
适用场景 本地调试 生产环境

从头配置 PostgreSQL

# 方式一:Docker 启动 PostgreSQL
docker run -d \
    --name airflow-postgres \
    -e POSTGRES_USER=airflow \
    -e POSTGRES_PASSWORD=airflow_password \
    -e POSTGRES_DB=airflow \
    -p 5432:5432 \
    postgres:13

# 方式二:系统安装 PostgreSQL(CentOS 7)
yum install -y postgresql-server postgresql-contrib
postgresql-setup initdb
systemctl start postgresql
systemctl enable postgresql

# 创建 Airflow 数据库和用户
sudo -u postgres psql -c "CREATE USER airflow WITH PASSWORD 'airflow_password';"
sudo -u postgres psql -c "CREATE DATABASE airflow OWNER airflow;"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE airflow TO airflow;"
# 安装 PostgreSQL 驱动
pip install "apache-airflow[postgres]"
# 或
pip install psycopg2-binary

# 更新 airflow.cfg 中的连接字符串
# [database]
# sql_alchemy_conn = postgresql+psycopg2://airflow:airflow_password@localhost:5432/airflow

# 重新初始化数据库
airflow db init

Legacy 2.8.1:初始化与启动

danger 不要用于 Airflow 3

下方命令仍启动旧 Webserver,并使用 2.8.1 的初始化流程。Airflow 3 需要 API Server 和独立 DAG Processor,升级数据库使用 db migrate。

完整初始化流程

# 步骤 1:设置环境变量
export AIRFLOW_HOME=/opt/airflow
export AIRFLOW__DATABASE__SQL_ALCHEMY_CONN="postgresql+psycopg2://airflow:password@localhost:5432/airflow"
export AIRFLOW__CORE__EXECUTOR=LocalExecutor

# 步骤 2:安装 Airflow 和必要的 Provider
pip install apache-airflow==2.8.1
pip install apache-airflow-providers-postgres apache-airflow-providers-mysql

# 步骤 3:初始化数据库(建表)
airflow db init

# 步骤 4:创建管理员账号
airflow users create \
    --username admin \
    --firstname Admin \
    --lastname User \
    --role Admin \
    --email admin@company.com \
    --password "YourStrongPassword123!"

# 步骤 5:启动 Webserver(Airflow 2.8.1 使用 Gunicorn,--daemon 表示后台运行)
airflow webserver --port 8080 --daemon

# 步骤 6:启动 Scheduler
airflow scheduler --daemon

# 步骤 7:验证
airflow dags list

常用管理命令

# 查看所有 DAG
airflow dags list

# 查看某个 DAG 的任务列表
airflow tasks list my_dag

# 手动触发一个 DAG
airflow dags trigger my_dag

# 查看 DAG 运行记录
airflow dags list-runs -d my_dag

# 测试单个 Task(不写入 MetaDB,纯测试)
airflow tasks test my_dag my_task_id 2024-01-01

# 数据库升级(升级 Airflow 版本后运行)
airflow db upgrade

# 查看配置信息
airflow config get-value core executor

# 停止服务
cat $AIRFLOW_HOME/airflow-webserver.pid | xargs kill
cat $AIRFLOW_HOME/airflow-scheduler.pid | xargs kill

Legacy 2.x 生产检查清单

warning 仅作迁移输入

清单里的数据库、密钥、权限和日志原则可以复用,但 Webserver、认证管理器、API、DAG Processor、Worker 隔离与升级回滚必须按 Airflow 3.3 重新验收。

tip 上生产前必须检查的事项

  • [ ] MetaDB 使用 PostgreSQL(而非 SQLite)
  • [ ] AIRFLOW__CORE__FERNET_KEY 已设置为随机密钥(用于加密 Connection 密码)
  • [ ] AIRFLOW__WEBSERVER__SECRET_KEY 已设置为随机密钥
  • [ ] 管理员密码已修改(不使用默认 airflow)
  • [ ] AIRFLOW__CORE__LOAD_EXAMPLES 设为 false
  • [ ] DAG 目录权限正确(Scheduler 可读,其他人不可写)
  • [ ] 日志目录有足够磁盘空间,并配置日志清理策略
  • [ ] Executor 根据规模选择(LocalExecutor 或 CeleryExecutor)

生成 Fernet Key 的方法:

# 生成安全的 Fernet Key
from cryptography.fernet import Fernet
fernet_key = Fernet.generate_key()
print(fernet_key.decode())
# 输出类似:ZmDfcTF7_60GrrY167zsiPd67pEvs0aGOv2oasOM1Pg=

常见安装问题(Legacy 2.8.1)

本节命令沿用 Airflow 2.8.1,不适用于前文 3.3 基线;--constraint "..." 是未填入的占位符,不能直接执行,须替换为与 Airflow 版本和 Python 小版本匹配的 constraints 地址。

问题 1:ModuleNotFoundError 安装后找不到模块

# 原因:Python 环境混乱
# 解决:使用虚拟环境
python3 -m venv ~/airflow-venv
source ~/airflow-venv/bin/activate
pip install apache-airflow==2.8.1 --constraint "..."

问题 2:Docker Compose 启动后 Webserver 一直 unhealthy

# 查看详细日志
docker compose logs airflow-webserver

# 常见原因:内存不足
# 解决:增加 Docker 内存限制到 4GB+

问题 3:airflow db init 报数据库连接错误

# 检查连接字符串
echo $AIRFLOW__DATABASE__SQL_ALCHEMY_CONN

# 测试数据库连接
python3 -c "
import sqlalchemy
engine = sqlalchemy.create_engine('postgresql+psycopg2://airflow:password@localhost:5432/airflow')
conn = engine.connect()
print('连接成功')
conn.close()
"

问题 4:Provider 安装失败(网络问题)

# 配置国内 pip 镜像
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

# 或使用 -i 参数
pip install apache-airflow==2.8.1 -i https://pypi.tuna.tsinghua.edu.cn/simple

小结

  • 本地学习:使用 Airflow 3.3 standalone 或受约束的 PyPI 安装
  • 开发/测试:使用官方 Docker Compose quick-start,但不把它视为生产架构
  • 生产环境:根据平台能力完成数据库、执行器、API Server、DAG Processor、认证授权、可观测性和回滚验收
  • 升级原则:先到最新 2.x,再迁移 DAG、Provider、数据库和启动拓扑

下一篇:第一个 DAG — 从零编写一个完整的数据处理 DAG


官方资料与复核范围

原稿声明已复核安装版本、依赖约束、Compose 初始化准备、健康检查边界和 3.x 升级门禁,但未附对应版本的核验记录,本轮不将该声明视为已完成核验。原有 2.8.1 代码块没有迁移,仍为 Legacy;Provider 与 Executor 的具体组合需要结合实际平台单独做兼容矩阵。

关联知识


所属系列:Airflow 学习路线图 | 上一篇:Airflow 核心概念 | 下一篇:第一个 DAG


info 前置知识

  • 掌握 Airflow 核心概念(DAG、Executor、MetaDB),参考 Airflow 核心概念
  • 熟悉 Docker 基本操作(docker compose up/down、查看容器日志)
  • 了解 Linux 命令行(环境变量设置、文件权限)

掌握检查

  • [ ] 能解释 Standalone、Compose quick-start 与生产部署分别能验证什么
  • [ ] 能按操作系统正确准备挂载目录和 .env,并说明 Linux 需要设置宿主 UID 的原因
  • [ ] 能确认初始化容器成功退出,并识别 API Server、Scheduler 和 DAG Processor 的运行状态
  • [ ] 能读取健康接口 JSON,且知道 HTTP 200 本身不等于所有 Airflow 组件健康
  • [ ] 能用锁定版本和 constraints 安装 Airflow 3.3,并通过版本与依赖一致性检查
  • [ ] 能列出生产发布所需的数据库、认证授权、密钥、日志、监控、容量、备份恢复和回滚证据

实践练习

基础题:按本文的 Airflow 3.3 Compose 完整路径启动 quick-start。保存初始化日志、服务状态与健康接口 JSON;只有四项快速验证标准全部通过,才记录为成功。

进阶题:选取一条真实 DAG,在隔离环境中完成 Airflow 3.3 兼容验证。提交版本锁定文件、Provider 兼容矩阵、DAG 解析结果、一次成功运行记录、一次故障注入后的告警证据,以及回滚步骤。不要通过切换到 SequentialExecutor 模拟生产容量结论。

#Airflow #安装部署 #Docker #PostgreSQL #配置管理 #数据工程