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 中国語 Web サイトの他の関連記事を参照してください。