【问题标题】:Can/Should a http read_timeout be retried?可以/应该重试 http read_timeout 吗?
【发布时间】:2026-02-14 00:50:02
【问题描述】:

我所在的网络通常会导致大量连接超时问题,有时我也会遇到读取超时问题。每当发生连接超时时重试代码可解决连接到服务器的问题。每当我收到 read_timeout 时重试代码是否安全,或者响应是否损坏?我正在使用带有 Net::HTTP 客户端的 Ruby,但我想这也适用于其他语言。

【问题讨论】:

    标签: ruby http language-agnostic timeout


    【解决方案1】:

    read_timeout 表示服务器在预期的超时时间内没有发送任何数据。响应被破坏的可能性较小,因为这是 TCP。

    回答是否安全重试取决于您正在执行的操作和/或与您交互的服务为您提供的任何保证。

    一般来说,GET 重试应该是安全的。 POST/PUT 可能需要特殊处理(即在决定重试之前重新读取某些状态),因为这通常意味着服务器上的某些内容发生了变化。

    【讨论】: