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

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

网页版: https://bigmodel.io/zh-cn/docs/error-concurrency-limit · 更新于 2026-10-27

同时发出的请求超过了账户能同时运行的数量，返回 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. **申请更高的限制。** 如果业务确实需要，带上账户邮箱和预计的并发数联系[支持](https://bigmodel.io/support)。

```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 的消费窗口。见[限额与速率](https://bigmodel.io/zh-cn/docs/rate-limits)。

## 相关文档

- [限额与速率](https://bigmodel.io/zh-cn/docs/rate-limits)
- [单个 Key 的限额](https://bigmodel.io/zh-cn/docs/key-limits)
- [错误码与响应](https://bigmodel.io/zh-cn/docs/errors)
