Skip to content

轮询策略

推荐做法

初始节奏

  • 第一次轮询:10s
  • 第二次轮询:25s
  • 第三次轮询:25s
  • 之后固定:10s

超时控制

  • 普通任务:300s~600s
  • 高耗时任务:600s~1200s

状态判断

兼容判断以下完成态:

  • completed
  • succeeded
  • done

失败态:

  • failed
  • error
  • canceled
  • cancelled

不推荐做法

  • 每秒轮询一次
  • 仅依赖 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)

以 VitePress 构建,由 Cloudflare Pages 发布