按场景设置 timeout
推理模型会先长时间思考再输出,一次请求可能持续几分钟,例如:
gpt-6-sol、gpt-5.6-solgpt-5.5-pro、o3-progemini-3.1-pro-preview
长输出优先用流式
非流式请求要等整段内容生成完才一次性返回,你的读超时要和整段生成时间竞速。改用流式(stream=True)后,内容边生成边返回:
- 首个数据很快到达,之后持续有事件返回;
- 读超时只需覆盖两次事件之间的间隔,通常设 90–120 秒;
- 总耗时不会变短,但不再因为等整段结果而断开。
关掉长请求的自动重试
OpenAI 官方 Python SDK 默认在超时等错误后自动重试 2 次。图片和推理请求建议把max_retries 设为 0,由业务代码决定是否重试:
- Python
- Node.js
- cURL
已经调大 timeout 仍然超时
按顺序检查:1
确认新的 timeout 真的生效
有些框架在 HTTP 客户端外面还包了一层超时。打印实际生效的配置,确认改的是被使用的那个参数。
2
检查链路上的每一层
任何一层的超时短于生成时间,都会先断开连接。逐一放宽:
- 自建反向代理,例如 Nginx 的
proxy_read_timeout默认 60 秒; - 云负载均衡的空闲连接超时;
- Serverless 函数的最长执行时间;
- 任务队列 worker 的单任务超时。
3
区分超时和限流
连接中断、读取超时是等待时间不够;
429 是速率或容量限制,与耗时无关。429 先做有限次数的退避重试,长期出现时联系支持团队。4
用调用日志确认实际耗时
在调用日志查看这次请求的用时和是否扣费,按实际耗时再留出余量。
常见问题
超时断开的请求还会扣费吗?
会,只要上游已经完成生成。断开发生在你的客户端,服务端和上游不会因此停止;返回429 或 503、没有进入生成的请求通常不扣费。实际扣费以调用日志为准,退款与余额调整按用户协议处理。