我很高兴地宣布 Apache Airflow 2.8.0 已发布,它带来了许多重要的增强功能和新特性,这将极大地造福我们的社区。
详情:
📦 PyPI: https://pypi.ac.cn/project/apache-airflow/2.8.0/
📚 文档: https://airflow.org.cn/docs/apache-airflow/2.8.0/
🛠 版本说明: https://airflow.org.cn/docs/apache-airflow/2.8.0/release_notes.html
🐳 Docker 镜像: “docker pull apache/airflow:2.8.0”
🚏 约束: https://github.com/apache/airflow/tree/constraints-2.8.0
Airflow 对象存储 (AIP-58)
此功能为实验性功能,可能会更改。
Airflow 现在提供了跨各种对象存储(如 S3、GCS 和 Azure Blob Storage)的通用抽象层,使得在 DAG 中使用不同的存储系统无需修改代码。
此外,它允许您使用大多数标准 Python 模块(例如 shutil),这些模块可以处理类文件对象。
这是一个如何使用新功能打开文件的示例
from airflow.io.path import ObjectStoragePath
base = ObjectStoragePath("s3://my-bucket/", conn_id="aws_default") # conn_id is optional
@task
def read_file(path: ObjectStoragePath) -> str:
with path.open() as f:
return f.read()
上面的示例只是冰山一角。新功能允许您为一个方案或协议配置备用后端。
这是一个如何为 dbfs 方案配置自定义后端的示例
from airflow.io.path import ObjectStoragePath
from airflow.io.store import attach
from fsspec.implementations.dbfs import DBFSFileSystem
attach(protocol="dbfs", fs=DBFSFileSystem(instance="myinstance", token="mytoken"))
base = ObjectStoragePath("dbfs://my-location/")
更多信息请参阅:Airflow 对象存储
对特定对象存储系统的支持取决于已安装的提供商,其中默认支持文件方案。
将其他组件的日志发送到任务日志
此功能将来自各种 Airflow 组件(包括调度器(Scheduler)和执行器(Executors))的任务相关消息无缝集成到任务日志中。通过这种集成,用户可以在单一日志视图中轻松跟踪错误消息和其他相关信息。
目前,假设一个任务在启动前被调度器终止,因长时间排队而超时,或转换到僵尸状态。在这种情况下,它不会记录在任务日志中。通过此增强功能,在这种情况下,可以将错误消息发送到任务日志,以便在用户界面(UI)上方便查看。
此功能可以切换开启/关闭,更多信息请参阅日志配置文档中的“enable_task_context_logger”。
用于数据集的监听器钩子
请注意,监听器仍处于实验阶段,可能会更改。
此功能允许用户使用监听器钩子订阅数据集的创建和更新事件。这对于根据数据集的创建或更新来触发外部进程特别有用。
将额外的索引 URL 用于 PythonVirtualEnvOperator 和缓存
此功能允许您为 PythonVirtualEnvOperator(及相应的装饰器)指定额外的索引 URL,以便能够从(私有)附加 Python 包仓库安装虚拟环境。
您还可以通过将虚拟环境缓存到指定目录并在后续运行中重用它们来复用虚拟环境。这可以通过在您的 worker 上将 venv_cache_path 设置为文件系统文件夹来实现
更多信息请参阅:PythonVirtualenvOperator
Web 用户界面改进
此版本对 Web 用户界面进行了一些改进,包括
在网格视图中为运行状态添加多选
网格视图现在支持对运行状态进行多选。这允许您选择多种状态来过滤网格视图中显示的 DAG 运行。

改进图形视图中的任务状态可见性
您现在可以通过任务的边框颜色在图形视图中查看任务状态。这使得一目了然地查看任务状态更加容易。

DAG 文档和 DAG 参数描述中的原始 HTML 代码默认禁用
作为我们持续努力使 Airflow 默认更安全的一部分,我们默认禁用了 DAG 文档和 DAG 参数描述中的原始 HTML 代码。我们重视您的安全,“默认安全”是我们强烈遵循的原则之一。
其他值得注意的用户界面改进包括
- 简化 DAG 触发用户界面
- 在触发用户界面表单中隐藏逻辑日期和运行 ID
- 将外部日志链接移至 React 日志页面顶部
更多新功能和改进可在 Airflow 2.8.0 版本说明 中找到。
贡献者
感谢为此版本做出贡献的所有人,包括 Amogh Desai, Andrey Anshin, Bolke de Bruin, Daniel Dyląg, Daniel Standish, Ephraim Anierobi, Hussein Awala, Jarek Potiuk, Jed Cunningham, Jens Scheffler, mhenc, Miroslav Šedivý, Pankaj Koti, Tzu-ping Chung, Vincent,以及所有提交代码的其他人,总共 110 位!正是你们让 Airflow 成为如此成功的项目!
希望您使用 Apache Airflow 2.8.0 愉快!
分享