在 Go 中重试失败的 HTTP 请求
当尝试使用 GoLang 将数据推送到 Apache 服务器并遇到错误时,考虑这一点至关重要HTTP请求是否会自动重试。此问题的答案是否定的,这意味着您必须实现自定义重试机制。
在提供的代码中,您使用 http.DefaultClient.Do 方法来执行请求。如果服务器不可用或其他错误,此方法不会自动处理重试。要合并重试逻辑,您可以采用自定义方法,如以下示例所示:
<code class="go">package main import ( "fmt" "io/ioutil" "log" "net/http" "time" ) func main() { var ( err error response *http.Response retries int = 3 ) for retries > 0 { response, err = http.Get("https://non-existent") // Change the URL to "https://google.com/robots.txt" for testing if err != nil { log.Println(err) time.Sleep(2 * time.Second) // Introduce a delay between retries retries -= 1 continue } 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>
在此示例中,time.Sleep 函数用于在重试之间引入延迟。您可以根据应用程序的具体要求调整延迟。请记住处理重试过程中可能出现的任何异常或错误,确保您的数据传输的稳定性和可靠性。
以上是如何在 Go 中重试失败的 HTTP 请求?的详细内容。更多信息请关注PHP中文网其他相关文章!