SuperAPI AI 工具集

airflow-state-store

通用与其它

查看项目

更新于 10-15 17:20

技能介绍

用途:在 Airflow 中跨重试与 DAG 运行持久化任务和资产状态,替代用 Variables 或 XCom 保存游标、作业 ID、水位线等临时状态的做法。核心能力包括三个原语:task_state_store(按任务实例身份作用域,重试后可续读同一存储,适合游标、offset、作业 ID);asset_state_store(按资产作用域,跨 DAG 运行存水位线、manifest 哈希等元数据);ResumableJobMixin(提交外部作业时避免重试重复提交,durable 默认 True)。

依赖前提:task_state_store、asset_state_store 和 ResumableJobMixin 的崩溃安全保证需要 Airflow 3.3+,可先运行 af config version 检查;低于 3.3 时这些功能不可用,durable=True 为空操作,应向用户说明并链接 AIP-103 跟踪 issue。

用法要点:task_state_store 经 context["task_state_store"] 注入,支持 get/set/delete/clear,值须为 JSON 可序列化(None 被拒),默认最大 64 KB,可由 [state_store] max_value_storage_bytes 配置,TTL 由 default_retention_days 控制,可用 NEVER_EXPIRE。asset_state_store 以命名 kwarg asset_state_store=None 注入,不能与 **context 混用,条目无 TTL,任意声明该资产为 inlet/outlet 的 DAG 可读写。动态映射任务中,task_state_store 按 map_index 隔离,asset_state_store 则最后写入者胜出,建议每个下标用不同 key。ResumableJobMixin 需实现 execute_resumable 与 submit_job、get_job_status、is_job_active、is_job_succeeded、poll_until_complete、get_job_result,可设 durable=False 关闭崩溃恢复;external_id_key 一旦部署切勿改名。

限制与适用:不用它做任务间传数据(用 XCom)、传大载荷(用 XCom 加对象存储后端)、跨 DAG 共享配置或密钥(用 Variables/Connections);有 Triggerer 且存在可延迟算子时优先用可延迟算子,retries=0 或无外部作业 ID 时该 mixin 无益。资料未提供收费、价格与具体平台支持范围。