2025 年 Airflow 峰会将于 10 月 07-09 日举行。立即注册享受早鸟票优惠!

在 Airflow Web UI 中自定义视图

Airflow 具备一项功能,允许通过插件管理器将自定义 UI 与其核心 UI 集成。

插件与 Airflow 核心 RestAPI 集成。在此插件中,从基类 airflow.plugins_manager.AirflowPlugin 派生出两个对象引用:fastapi_appsfastapi_root_middlewares

在 Airflow 插件中使用 fastapi_apps,可以扩展核心 RestAPI,以支持提供自定义静态文件或任何其他 json/应用程序响应的额外端点。在此对象引用中,会传递一个字典列表,其中包含 FastAPI 应用程序以及名称和 URL 前缀等元数据信息。

在 Airflow 插件中使用 fastapi_root_middlewares,可以在 FastAPI 应用程序的根部注册自定义中间件。此中间件可用于为整个 FastAPI 应用程序(包括核心端点)添加自定义头部、日志记录或任何其他功能。在此对象引用中,会传递一个字典列表,其中包含中间件工厂对象、初始化参数以及名称等元数据信息。

有关注册 fastapi_appsfastapi_root_middlewares 的信息和代码示例可在插件文档中找到。

支持 Airflow 2 插件

Airflow 2 插件仍然受支持,但存在一些限制。有关此类插件的更多信息可在 Airflow 2 文档中找到。

仍然支持通过蓝图添加 Rest 端点,这些端点将通过 WSGI 中间件集成到 FastAPI 应用程序中,并在 /pluginsv2 下可访问。

目前无法扩展核心 UI,例如通过扩展基础模板来实现。但是,认证管理器 (auth managers) 的额外菜单项已添加到核心 UI 的安全选项卡中,并且其 href 会在 iframes 中渲染。fab 提供程序就是通过这种方式将用户、角色、操作、资源和权限的自定义视图集成到 Airflow 3 UI 中的。

Airflow 3 插件将得到改进,以允许对整个 React 应用进行 UI 自定义,建议在可能的情况下将您的插件升级到 Airflow 3 插件。在此之前,对于临时或自定义需求,可以使用中间件将自定义 javascript 或 css 注入到核心 UI 的索引请求中。

此条目有帮助吗?