解决 429 “Concurrency limit exceeded” 和 “Too many pending requests”

BigModel.io 返回 429 “Concurrency limit exceeded for user” 和 “Too many pending requests, please retry later” 的含义,以及如何控制并发请求数并重试。

本页目录
  1. 这是什么意思
  2. 怎么解决
  3. 常见问题排查
  4. 相关文档

同时发出的请求超过了账户能同时运行的数量,返回 HTTP 429 和下面其中一个错误:

json
{ "type": "error", "error": { "type": "rate_limit_error", "message": "Concurrency limit exceeded for user, please retry later" } }
json
{ "type": "error", "error": { "type": "rate_limit_error", "message": "Too many pending requests, please retry later" } }

#这是什么意思

每个账户有一个可同时运行的请求数,超出的请求会在一个很短的队列里等待。

  • “Too many pending requests”:队列已满,请求被立即拒绝。
  • “Concurrency limit exceeded for user”:请求在队列里等得太久,没有拿到位置。

报错也可能以 “for account” 结尾,处理方法相同。

这个限制按账户计算,不按 Key,所以同一账户下的多个工具共用它。流式请求在输出结束前一直占着位置,所以长时间运行的 Agent 会话最容易用满。被拒绝的请求不扣费。

#怎么解决

  1. 限制自己的并发数。 用工作池或信号量控制同时运行的请求数。在 Dify、n8n 或批处理脚本里,减少并行节点或 worker 数量。
  2. 退避重试。 这两种 429 不带 Retry-After。先等 1–2 秒,然后按指数退避并加随机抖动。
  3. 错开大批量任务。 批处理避开 Agent 使用高峰。
  4. 申请更高的限制。 如果业务确实需要,带上账户邮箱和预计的并发数联系支持。
python
import asyncio
limit = asyncio.Semaphore(4)  # 同时最多 4 个请求

async def call(client, prompt):
    async with limit:
        return await client.chat.completions.create(model="glm-5.3", messages=[{"role": "user", "content": prompt}])

#常见问题排查

429 rate_limit_exceeded 并带有 Retry-After 头。 这是每分钟请求数限制,不是并发限制。按给出的秒数等待。

429 提到 5 小时、日或 7 天限额。 这是 Key 的消费窗口。见限额与速率。

#相关文档

更新于 · 以 Markdown 查看