# 并发、限流与重试

> 429 是什么意思？并发上限多少？如何指数退避重试？高并发批量生产的限流应对

<AccordionGroup>
  <Accordion title="平台是怎么做限流的？">
    LoopRouter 按**渠道维度做 RPM 智能调度**：并发高峰时任务会短暂排队而不是直接失败。此外对每个账号的模型请求也有速率保护。整体目标是「高并发下任务不丢失」，而不是简单地拒绝。
  </Accordion>
  <Accordion title="收到 429 怎么办？">
    429 表示 `当前分组上游负载已饱和，请稍后再试`。建议**指数退避重试**：2s → 4s → 8s，逐步拉长间隔。不要收到 429 就立刻高频重试，那会让排队更拥堵。
  </Accordion>
  <Accordion title="并发上限是多少？">
    视频生成是异步任务，天然适合高并发提交——你可以循环创建大量任务收集 `id`，再集中轮询。真正的瓶颈在上游渠道的处理速度而非创建接口。如果你的业务需要更高的稳定并发额度，请通过 [控制台](https://console.looprouter.com) 工单联系我们评估。
  </Accordion>
  <Accordion title="批量生产（跑批）的推荐姿势？">
    1）并发提交任务、集中收集 `id`；2）用任务列表接口 `GET /api/v3/contents/generations/tasks` 分页批量查询状态，而不是每个任务单独长轮询；3）对 429 / 5xx 指数退避重试；4）成片及时下载转存。详见 [电商与营销短视频](/scenarios/ecommerce-marketing) 里的跑批实践。
  </Accordion>
  <Accordion title="素材库操作也会限流吗？">
    会，但有自动排队缓冲。短时突发的素材注册请求会先排队等待（最长约 5 秒）而不是立即失败，超出等待窗口才返回 429。素材相关的 503 `NoAvailableAssetChannel` 表示当前账号的素材库服务暂未就绪，需联系我们开通。
  </Accordion>
  <Accordion title="哪些错误该重试，哪些不该？">
    **该重试**：429（限流）、5xx（服务端临时异常）——指数退避。**不该重试**：400（参数错误，重试还是错）、401/403（鉴权 / 权限 / 审核问题，需修正请求）、404（任务或资源不存在）。盲目重试 4xx 只会浪费配额。
  </Accordion>
</AccordionGroup>

## 重试参考实现

```python
import time, requests

def create_with_retry(session, url, headers, body, max_retries=5):
    delay = 2
    for attempt in range(max_retries):
        resp = session.post(url, headers=headers, json=body)
        if resp.status_code < 400:
            return resp.json()
        # 仅对 429 / 5xx 退避重试；4xx 直接抛出
        if resp.status_code == 429 or resp.status_code >= 500:
            time.sleep(delay)
            delay *= 2
            continue
        resp.raise_for_status()
    raise RuntimeError("重试多次仍失败，请稍后再试")
```

## 相关文档

<CardGroup cols={3}>
  <Card title="视频生成 API" icon="clapperboard" href="/api-capabilities/seedance2/video-generation">
    错误响应与状态码
  </Card>
  <Card title="电商与营销" icon="cart-shopping" href="/scenarios/ecommerce-marketing">
    批量生产实践
  </Card>
  <Card title="服务状态" icon="wave-pulse" href="/live/overview">
    上游负载与维护动态
  </Card>
</CardGroup>
