API 超时后能直接重试吗?先分清失败与结果未知
756 字
4 分钟
API 超时后能直接重试吗?先分清失败与结果未知
客户端超时只表示它没有在期限内拿到完整结果。请求可能尚未送达,也可能已经被接收、生成甚至结算。对会创建任务或产生费用的请求,“看不到结果”应先进入结果未知状态。
按操作决定处理方法
| 操作或现象 | 建议 |
|---|---|
| 查询模型、查询已知任务 ID | 可以有限重试,遵循限流并设置总时限 |
| 401、403、参数校验失败 | 修正配置或权限;重复原请求通常无效 |
| 429 | 检查余额、并发与错误正文;按实际规则退避 |
| 创建任务后连接断开 | 先查业务记录、任务 ID 和用量,避免直接创建第二个任务 |
| 流式输出已经收到一部分 | 保存已接收部分和请求 ID;重新生成属于新的尝试 |
对允许重试的操作,可使用带随机抖动的指数退避,同时限制次数、单次超时和总体时间。若服务端提供有效的 Retry-After,按其指示等待。不要让 SDK、代理、队列消费者三层各自重试,导致次数相乘。
HiKaRi 视频创建的幂等规则
依据 视频文档,创建视频使用 POST /v1/videos,也提供 /v1/videos/generations 兼容入口。对同一个业务动作,在第一次提交前生成并持久化 Idempotency-Key,它应是 1~128 个 ASCII 字符。
业务 ID → 幂等键 → 提交请求 → 保存任务 ID → 查询任务 → 保存成品例如使用 Python 的 uuid.uuid4().hex 生成键。相同业务、相同请求体、相同 Key 凭据的安全重发使用同一幂等键;不要每次网络重试生成新键。修改模型、提示词等请求内容应视作新的业务版本,不能强行复用旧键。
请求头示意:
Authorization: Bearer <你的 API Key>Content-Type: application/jsonIdempotency-Key: <已持久化的本次业务幂等键>这里描述的是视频文档明确提供的规则,不意味着文字、图片或所有第三方接口都自动支持相同幂等行为。幂等有效范围与冲突响应以实际文档和接口为准,不承诺永久去重。
任务队列怎么存状态
在业务库中为一次用户动作建立唯一记录,保存请求摘要、幂等键、任务 ID、最近一次查询时间和最终状态。消费者重启后从这条记录恢复,先查后续进度。
若提交后未拿到任务 ID,保留“结果未知”,使用同一幂等规则核对,不直接宣告失败并自动另起任务。长时间无法确定时携带脱敏记录联系支持。
媒体生成完成、结算确认和成品存储是不同状态,详见 图片与视频流程。短期重试不能代替业务对账;最终应核对已创建任务与费用,排除重复执行。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
API 超时后能直接重试吗?先分清失败与结果未知
https://blog.hikaripublic.xyz/posts/retry-and-idempotency/相关文章智能推荐
1
图片与视频 API 接入:创建、查询、结算与保存成品
工程实践图片和视频不要套用同一套同步请求假设;视频任务需分别核对生成、结算和存储状态。
2
从这里开始:HiKaRi API 接入与阅读路线图
接入教程第一次接入、排查报错、选择渠道或开展团队项目,从对应入口开始。先验证最小请求,再扩大使用。
3
蒸馏与合成数据项目:先确定授权、质量标准和验收集
团队与研究把数据权利、上游使用条件、任务设计、去重与验收拆开,避免花钱生成大量无法使用的训练样本。
4
AI API 成本怎么算:Token、缓存、图片与视频分开核对
模型与成本用一份明确标注假设的账单例子,区分输入、输出、缓存和媒体任务费用,避免只比较模型标价。
5
如何评测模型与 API 渠道:用自己的任务建立验收表
模型与成本从固定样本、盲评、时延到每个合格结果的成本,建立可重复的小规模选型流程。
随机文章随机推荐














