切换主题
轮询策略
推荐做法
初始节奏
- 第一次轮询:
10s - 第二次轮询:
25s - 第三次轮询:
25s - 之后固定:
10s
超时控制
- 普通任务:
300s~600s - 高耗时任务:
600s~1200s
状态判断
兼容判断以下完成态:
completedsucceededdone
失败态:
failederrorcanceledcancelled
不推荐做法
- 每秒轮询一次
- 仅依赖
progress == 100 - 未拿到任务 ID 就开始轮询
参考代码
python
import time
import requests
intervals = [10, 25, 25]
default_interval = 10
for index in range(120):
response = requests.get(f"{base_url}/v1/videos/{task_id}", headers=headers, timeout=30)
payload = response.json()
status = payload.get("status", "")
if status in {"completed", "succeeded", "done"}:
break
if status in {"failed", "error", "canceled", "cancelled"}:
raise RuntimeError(payload)
wait_seconds = intervals[index] if index < len(intervals) else default_interval
time.sleep(wait_seconds)