【Bug已解决】codex: 速率限制 429 — CodeX CLI 请求过于频繁解决方案
·
【Bug已解决】codex: rate limit exceeded / 429 Too Many Requests — CodeX 速率限制解决方案
1. 问题描述
CodeX CLI 遇到速率限制错误,无法继续发送请求:
# 速率限制
$ codex "分析代码"
Error: 429 rate_limit_exceeded
You've exceeded your rate limit. Please wait.
# 或 TPM 限制
$ codex --print "分析大文件" --max-turns 10
Error: 429
Token limit exceeded: 150000 tokens/minute.
# 或 RPM 限制
$ for i in $(seq 1 100); do codex --print "task $i"; done
Error: 429
Request limit: 60 requests/minute.
# 或并发限制
$ codex "task1" &
$ codex "task2" &
Error: 429
Concurrent request limit exceeded.
这个问题在以下场景中特别常见:
- 高频请求(RPM 超限)
- 大量 Token(TPM 超限)
- 并发请求
- 免费层限制低
- CI/CD 批量任务
- 多终端同时使用
2. 原因分析
原因分类表
| 原因分类 | 具体表现 | 占比 |
|---|---|---|
| RPM 超限 | 请求太多 | 约 35% |
| TPM 超限 | Token 太多 | 约 30% |
| 并发限制 | 同时请求 | 约 15% |
| 免费层 | 限制低 | 约 10% |
| CI/CD | 批量 | 约 5% |
| 多终端 | 同时 | 约 5% |
3. 解决方案
方案一:等待重试(最推荐)
# 步骤 1:等待 60 秒
sleep 60
codex "task"
# 步骤 2:重试脚本
for i in 1 2 3 4 5; do
output=$(codex --print "task" --max-turns 5 2>&1)
if echo "$output" | grep -qi "429\|rate_limit"; then
echo "Rate limited, retry $i in 60s..."
sleep 60
else
echo "$output"
break
fi
done
# 步骤 3:CI/CD 中
codex --print "task" --max-turns 5 || sleep 60 && codex --print "task" --max-turns 5
方案二:控制请求频率
# 步骤 1:添加延迟
codex --print "task1" --max-turns 5
sleep 10
codex --print "task2" --max-turns 5
sleep 10
# 步骤 2:CI/CD 中串行
for task in task1 task2 task3; do
codex --print "$task" --max-turns 5
sleep 15 # 15 秒间隔
done
# 步骤 3:避免并发
# 不要同时运行多个 codex 实例
# 步骤 4:验证
codex --print "hello" --max-turns 1
方案三:减少 Token 消耗
# 步骤 1:使用更便宜的模型
codex --model gpt-4o-mini "task"
# 步骤 2:减少 --max-turns
codex --print "task" --max-turns 5
# 步骤 3:精简提示
# 错误: codex "分析整个项目所有文件"
# 正确: codex "分析 src/index.js"
# 步骤 4:分步执行
codex "分析 src/index.js"
sleep 10
codex "分析 src/auth.js"
方案四:升级计划
# 步骤 1:检查当前计划
# 登录 https://platform.openai.com/
# 查看 Usage & Limits
# 步骤 2:升级计划
# Free: 低限制
# Plus/Team: 中等限制
# Enterprise: 高限制
# 步骤 3:使用 API Key
export OPENAI_API_KEY=sk-xxxxx
codex "task"
# 步骤 4:验证限制
codex --print "hello" --max-turns 1
方案五:使用多个 API Key
# 步骤 1:创建多个 Key
# Key A: sk-KEY_A
# Key B: sk-KEY_B
# 步骤 2:轮换使用
export OPENAI_API_KEY=sk-KEY_A
codex --print "task1" --max-turns 5
export OPENAI_API_KEY=sk-KEY_B
codex --print "task2" --max-turns 5
# 步骤 3:自动轮换
KEYS=("sk-KEY_A" "sk-KEY_B" "sk-KEY_C")
for i in 0 1 2; do
export OPENAI_API_KEY=${KEYS[$((i % 3))]}
codex --print "task$i" --max-turns 5
sleep 20
done
方案六:使用 --no-stream
# 步骤 1:非流式模式减少请求
codex --no-stream "task"
# 步骤 2:或 --print --no-stream
codex --print --no-stream "task" --max-turns 5
# 步骤 3:CI/CD 中
codex --print --no-stream --full-auto "task" --max-turns 5
# 步骤 4:验证
codex --print --no-stream "hello" --max-turns 1
4. 各方案对比总结
| 方案 | 适用场景 | 推荐指数 | 难度 |
|---|---|---|---|
| 方案一:等待重试 | 即时 | ⭐⭐⭐⭐⭐ | 低 |
| 方案二:控制频率 | 预防 | ⭐⭐⭐⭐⭐ | 低 |
| 方案三:减少 Token | 成本 | ⭐⭐⭐⭐⭐ | 低 |
| 方案四:升级 | 长期 | ⭐⭐⭐⭐ | 中 |
| 方案五:多 Key | 高频 | ⭐⭐⭐⭐ | 中 |
| 方案六:--no-stream | 减少 | ⭐⭐⭐⭐ | 低 |
5. 常见问题 FAQ
5.1 429 错误是什么
Too Many Requests。请求频率或 Token 超过限制。
5.2 RPM 和 TPM 是什么
- RPM: Requests Per Minute
- TPM: Tokens Per Minute
5.3 速率限制多久重置
通常 1 分钟。等待 60 秒后重试。
5.4 如何查看限制
登录 https://platform.openai.com/ 查看计划的限制。
5.5 免费层限制多少
通常 RPM: 3-5, TPM: 40000。Plus 更高。
5.6 如何减少 RPM
添加 sleep 10 间隔,串行运行,不并发。
5.7 如何减少 TPM
使用 gpt-4o-mini 模型,减少 --max-turns,精简提示。
5.8 多 API Key 合法吗
合法。可以在 OpenAI 平台创建多个 Key。
5.9 CI/CD 中如何避免 429
使用 sleep 15 间隔,重试脚本,--no-stream。
5.10 排查清单速查表
□ 1. sleep 60 等待重置
□ 2. 重试脚本: for + sleep + grep 429
□ 3. sleep 10 间隔控制频率
□ 4. 串行运行不并发
□ 5. --model gpt-4o-mini 减少 Token
□ 6. --max-turns 5 减少轮次
□ 7. 精简提示
□ 8. 升级 Plus/Team 计划
□ 9. 多 API Key 轮换
□ 10. --no-stream 减少请求
6. 总结
- 根本原因:速率限制最常见原因是 RPM 超限(35%)和 TPM 超限(30%)
- 最佳实践:
sleep 60等待重置,使用重试脚本自动处理 429 - 控制频率:使用
sleep 10间隔,串行运行,不并发 - 减少消耗:使用 gpt-4o-mini 模型,减少
--max-turns,精简提示 - 最佳实践建议:CI/CD 中使用
sleep 15间隔 + 重试脚本 +--no-stream,多 API Key 轮换
故障排查流程图
flowchart TD
A[速率限制 429] --> B{是 RPM?}
B -->|是| C[等待 60 秒]
B -->|否, TPM| D[减少 Token]
C --> E[sleep 60 + 重试]
D --> F[--model gpt-4o-mini]
F --> G[--max-turns 5]
G --> H[精简提示]
H --> I[codex 验证]
E --> I
I --> j{还 429?}
j -->|否| K[✅ 问题解决]
j -->|是| L[控制请求频率]
L --> M[sleep 10 间隔]
M --> N[串行运行]
N --> I
j -->|是| O[使用多 Key]
O --> P[KEY_A → KEY_B 轮换]
P --> I
j -->|是| Q[使用 --no-stream]
Q --> R[codex --no-stream]
R --> I
j -->|是| S[升级计划]
S --> T[Plus/Team/Enterprise]
T --> I
K --> U[长期: sleep + mini + 多 Key]
U --> V[✅ 长期方案]

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)