我很高兴地宣布 Apache Airflow 2.7.0 已正式发布!我们添加了一些值得关注的功能,期待社区使用。
Apache Airflow 2.7.0 包含超过 500 次提交,其中包括 40 项新功能、49 项改进、53 个 bug 修复和 15 项文档更改。
详情:
📦 PyPI: https://pypi.ac.cn/project/apache-airflow/2.7.0/
📚 Docs: https://airflow.org.cn/docs/apache-airflow/2.7.0/
🛠 Release Notes: https://airflow.org.cn/docs/apache-airflow/2.7.0/release_notes.html
🐳 Docker 镜像:“docker pull apache/airflow:2.7.0”
🚏 Constraints: https://github.com/apache/airflow/tree/constraints-2.7.0
Airflow 2.7.0 是一个聚焦安全性的发布。Airflow 安全团队与安全研究人员合作,识别出需要加强安全的多个领域。因此,除了其他改进之外,还改进了对 Airflow 安全模型 的描述,更好地阐释了我们的 安全策略,并默认禁用某些可能危险的功能——例如连接测试(#32052)。
Airflow 2.7.0 也是首次不再支持已停止维护的 Python 3.7。这使得 Airflow 用户和维护者能够使用 Python 3.8 中的特性和改进,并解锁我们依赖项的更新版本。
设置与拆除(AIP-52)
Airflow 现在对设置和拆除任务概念提供一级支持。这些任务具有特殊行为,即
- 拆除任务仍会执行,无论上游任务最终处于何种状态
- 默认情况下,拆除任务失败不会导致 DAG 运行失败
- 在清除依赖任务时自动清除设置/拆除任务
您可以在 Introducing Setup and Teardown tasks 博客文章 或 设置与拆除文档 中了解更多关于设置和拆除的信息。
集群活动界面
Airflow 新增了一个顶层页面——集群活动页面。它提供了集群概览,包括组件健康状态、DAG 与任务状态计数等信息!

图形视图和甘特视图已迁移至网格视图 UI
图形视图和甘特视图已重写并迁入现在熟悉的网格视图。这使得在任务详情、日志、图形和甘特视图之间切换更加便捷,不会在复杂的 DAG 中失去位置。

通过一个配置项为所有可延迟任务启用可延迟模式
Airflow 2.7.0 引入了新配置项 default_deferrable,管理员可通过该配置为所有可延迟任务启用可延迟模式,无需修改 DAG。只需在配置中设置即可享受异步任务!
OpenLineage 内置集成
OpenLineage 提供了一套规范,用于在数据生态系统中统一收集和分发运营血统,无论是开源项目还是专有项目均可实现。
在 2.7.0 中,OpenLineage 从 OpenLineage 项目中维护的插件实现转变为 Airflow 的内置功能。作为插件时,OpenLineage 依赖于 Airflow 和算子内部实现,导致其脆弱。将 OpenLineage 集成内置于 Airflow 后,通过发布运营血统变得更容易且更可靠。实现方式是将 openlineage-airflow 包从 OpenLineage 项目迁移至基础 Airflow Docker 镜像中的 apache-airflow-providers-openlineage 提供者,可通过配置轻松启用。同时,原先在该包的 Extractors 中的血统抽取逻辑已移入相应的提供者包并附带单元测试,因而大多数情况下不再需要 Extractors。为此,算子提供了一个新的可选 API(get_openlineage_facets_on_{start(), complete(ti), failure(ti)},文档 此处),可用于实现血统抽取。将抽取逻辑置于各个提供者中,可确保每个算子的血统合约稳定,并使为自定义算子添加血统覆盖更为简便。
部分执行器已迁移至提供者
Airflow 2.7.0 中,一些原本在核心 Airflow 中提供的执行器已迁移至各自的提供者。这样做的主要好处是,提供者可以独立于核心发布,从而实现更快速的错误修复发布。以下提供者已迁移,并需要满足相应的最低版本要求:
- 若要使用 Celery 执行器,请安装 celery 提供者 3.3.0 及以上版本
- 若要使用 Kubernetes 执行器,请安装 kubernetes 提供者 7.4.0 及以上版本
- 若要使用 Dask 执行器,请安装任意版本的 daskexecutor 提供者
如果您使用官方 Docker 镜像,这些提供者均已预装。
其他新特性
以下仅列出一些有趣的新特性,完整列表实在太多,无法全部列出
- 池现在可以将处于延迟状态的任务视为运行中(#32709)
- chain_linear,类似 chain 但允许顺序任务(#31927)
- 网格视图现在支持键盘快捷键!(#30950)
- 将任务组标记为成功或失败(#30478)
- Fail_stop,允许在 DAG 中第一次失败时将所有剩余及运行中的任务标记为失败(#29406)
贡献者
感谢所有为此发布做出贡献的人员,包括 Akash Sharma、Amogh Desai、Brent Bovenzi、D. Ferruzzi、Daniel Standish、Ephraim Anierobi、Hussein Awala、Jarek Potiuk、Jed Cunningham、Karthikeyan Singaravelan、Maciej Obuchowski、Niko Oliveira、Pankaj Koti、Pankaj Singh、Pierre Jeambrun、Tzu-ping Chung、Utkarsh Sharma、Vincent Beck,以及其他 74 多位贡献者!
特别感谢我们的发布经理 Ephraim,正是他让本次发布顺利完成。
希望您喜欢使用 Apache Airflow 2.7.0!
分享