任务状态、错误与恢复¶
AI Studio SDK 没有通用的等待完成或自动重试操作。工作流运行、导入任务、导出任务、智能体任务和 SQL 查询各自提供状态读取、取消或重试入口;等待时间、轮询间隔和是否再次执行由调用方决定。
任务流程¶
对返回任务或运行 ID 的操作,保存服务端返回的 ID。
使用同一资源类型读取状态或结果。
只根据该资源返回的状态和结果决定后续操作。
本地等待到期只表示应用停止等待,不表示平台已经停止任务。重新提交可能写入数据或创建资源的请求前,先读取原任务状态。
使用资源专属的恢复操作¶
重试和取消是资源专属操作,并不等同于自动重试网络请求。
资源 |
可用操作 |
调用前检查 |
|---|---|---|
工作流运行 |
重试、取消 |
使用运行 ID 读取当前运行和结果,确认是否继续。 |
导入任务 |
重试失败文件、暂停、恢复 |
先读取任务、运行或失败文件;只选择需要重试的文件。 |
导出任务 |
重试失败文件 |
先读取任务详情和运行状态;只选择需要重试的文件。 |
SQL 查询 |
取消 |
先读取查询状态;已结束查询的取消可能被拒绝。 |
处理 SDK 错误¶
认证、权限、参数校验、资源不存在或作用域不匹配时,先修正问题,不要自动重试。发生网络错误或本地超时时,先用已保存的 ID 读取原资源状态,再决定是否进行资源专属重试或重新提交。
Go 和 Python 的 SDK 错误都提供错误代码、错误消息、状态和请求标识。请求标识仅来自响应头;响应正文中的同名字段不会作为传输请求标识使用。记录诊断信息时不要记录访问令牌、连接器密钥、文件内容或完整业务负载。
import (
"errors"
"log"
sdk "github.com/matrixorigin/matrixflow/sdk/go-sdk"
)
func logSDKError(err error) {
var productErr *sdk.Error
if errors.As(err, &productErr) {
log.Printf(
"AI Studio SDK request failed: code=%s status=%d request_id=%s message=%s",
productErr.Code, productErr.Status, productErr.RequestID, productErr.Message,
)
return
}
log.Printf("AI Studio SDK request failed: %v", err)
}
import logging
import moi_product_sdk as sdk
def log_sdk_error(operation):
try:
return operation()
except sdk.Error as error:
logging.error(
"AI Studio SDK request failed: code=%s status=%s request_id=%s message=%s",
error.code,
error.status,
error.request_id,
error.message,
)
raise
流式响应和本地超时¶
流式调用、文件预览和下载返回的是正在读取的响应,不是任务完成信号。Go 调用方在读取后关闭响应体;Python 调用方关闭流式响应。如果应用设置了本地超时或停止读取流,请通过相应任务或运行对象查询实际状态。
下一步¶
最后更新于