HTTP 请求中自动重试
问题:
在 GoLang 中,尝试推送时数据传输到 Apache 服务器时,该服务器可能暂时不可用。这种情况下 HTTP 请求会自动重试吗?
答案:
不会,GoLang 中默认的 HTTP 客户端不会自动重试 HTTP 请求。
重试方法的实现:
要实现自定义重试机制,请考虑以下示例:
<code class="go">package main import ( "fmt" "io/ioutil" "log" "net/http" ) func main() { var ( err error response *http.Response retries int = 3 ) for retries > 0 { response, err = http.Get("https://non-existent") if err != nil { log.Println(err) retries -= 1 } else { break } } if response != nil { defer response.Body.Close() data, err := ioutil.ReadAll(response.Body) if err != nil { log.Fatal(err) } fmt.Printf("data = %s\n", data) } }</code>
此代码演示了基本的重试机制,允许失败前最多重试 3 次。重复发出HTTP请求,直到成功或达到指定的重试次数。
以上是当服务器不可用时,GoLang 的默认 HTTP 客户端是否会自动重试请求?的详细内容。更多信息请关注PHP中文网其他相关文章!