环境: curl 直连 + gemini
重试三次都超时
报错全文:
Error: The operation timed out.
FetchError: request to https://api.example.com/v1/messages failed, reason: connect ETIMEDOUT
{"error":{"message":"upstream request timeout","type":"new_api_error"}}
查了下资料,说最常见原因是「客户端超时设得太短(默认 30s,长回答根本不够)」,但我这个场景……求大佬指点。
afeng
2
这个我们在报错百科里做过完整排查,直接给结论:
请求没在规定时间内等到完整响应。 先调大超时阈值,再查网络链路——大部分超时是客户端设置太短,不是服务挂了。
修法(节选自百科,完整版见正文链接):
调大超时
| 客户端 |
怎么调 |
| OpenAI SDK |
client = OpenAI(timeout=120) |
| Anthropic SDK |
client = Anthropic(timeout=120) |
| Node fetch |
AbortSignal.timeout(120_000) |
| curl |
--max-time 180 |
| Cursor |
设置里找 Network / Timeout |
长回答一定要 120 秒以上。生成 4000 token 在慢渠道上可能超过 60 秒。
判断是不是链路问题
curl -o /dev/null -s -w "连接: %{time_connect}s\n首字节: %{time_starttransfer}s\n总计: %{time_total}s\n" \
https://api.example.com/v1/models -H "Authorization: Bearer $KEY"
time_connect 高 → DNS 或网络链路
time_starttransfer 高 → 服务端处理慢
完整排查文档(含全部概率排序和责任判定):API Error: The operation timed out:请求超时怎么解决 · 报错百科 · docai.cc
按这个改完基本就通了。还报错的话把你改后的完整报错贴上来,我再看。