HTTP 请求重试机制
问:我正在尝试使用 Go 将数据推送到 Apache 服务器。如果 Apache 服务器暂时关闭,我的 HTTP 请求会自动重试吗?
答:不会,HTTP 请求本身不会在服务器中断时重试。
自定义重试逻辑
要实现自动重试,您需要创建自己的重试机制。以下链接提供了基本的实现:
[Go 重试函数示例](https://play.golang.org/p/_o5AgePDEXq)
<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>
在此示例中,自定义重试机制是使用循环来实现的,该循环在失败之前多次尝试 HTTP 请求。您可以根据应用的具体需求调整重试次数以及判断是否重试的逻辑。
以上是HTTP 请求会在服务器中断时自动重试吗?的详细内容。更多信息请关注PHP中文网其他相关文章!