在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中文網其他相關文章!