异步任务流程
创建、轮询、完成、失败与下载的状态处理方式
状态机
创建任务 -> queued -> in_progress -> completed
\-----> failed火山兼容查询响应外层包含 code 与 data,任务状态位于 data.status。OpenAI 视频查询直接返回视频对象,任务状态位于顶层 status。
| 状态 | 是否终态 | 客户端处理 |
|---|---|---|
queued | 否 | 等待后继续轮询 |
in_progress | 否 | 展示 progress,继续轮询 |
completed / succeeded | 是 | 读取结果地址或获取视频内容 |
failed | 是 | 读取 error.code 与 error.message,不要继续轮询 |
推荐轮询策略
- 首次等待 2 秒后查询。
- 常规轮询间隔为 3 到 5 秒,并加入少量随机抖动。
- 遇到
429或5xx时使用指数退避,设置最大重试次数。 - 客户端应设置总超时,不要无限轮询。
- 只使用公开的
task_...ID 查询,不要尝试解析或替换任务 ID。
结果安全
result_url 可能是有有效期的签名地址。需要长期保存时,应在任务完成后及时下载到自己的对象存储。下载接口支持流式返回,调用方应按二进制处理,避免把响应当作 JSON。
最后更新于