SuperAPI AI 工具集

authoring-go-sdk-tasks

智能体与模型

查看项目

更新于 10-15 17:20

技能介绍

用途:在 Airflow 中用 Go 编写任务逻辑。其语言 SDK 模型为:DAG 保留在 Python,每个任务是一个编译后的 Go 函数,注册在 bundle(单个原生可执行文件)中。该技能覆盖 Go 专用原生 API;共享模型(Python @task.stub 模式、ID 匹配、XCom-as-JSON 契约)见 authoring-language-sdk-tasks。

状态限制:实验性。Go SDK 仍在开发中,尚未生产可用。模块路径 github.com/apache/airflow/go-sdk(Go 1.24+),API 可能变更。

Python 侧:每个 Go 任务对应一个无逻辑的 Python stub,声明任务、queue 与依赖图,ID 必须与 Go 注册完全一致,queue= 将任务路由到 Go 运行时。

bundle 入口:实现 bundlev1.BundleProvider,报告版本并注册 DAG 与任务;main 中调用 bundlev1server.Serve。AddTask(fn) 从 Go 函数名推导 task_id,名称不匹配时用 AddTaskWithName。RegisterDags 是任务身份的唯一来源,manifest 由运行它生成,不手写。

任务函数按参数类型注入:context.Context、sdk.TIRunContext、*slog.Logger、sdk.Client 及其窄接口 VariableClient/ConnectionClient/XComClient;可选返回 (result, error),非空 result 会推送为 return_value XCom,非空 error 使任务失败并触发 stub 的 retry。sdk.Client 提供变量、连接与 XCom 访问,未找到时返回哨兵错误。

注意:ID 必须与 Python stub 匹配且 queue 路由到 Go 协调器,否则任务不会送达;请求最窄接口;panic 恢复也视为失败。相关技能:deploying-go-sdk-bundles、configuring-airflow-language-sdks、authoring-language-sdk-tasks。