ホームページ >バックエンド開発 >Golang >Go で失敗した HTTP リクエストを再試行するにはどうすればよいですか?

Go で失敗した HTTP リクエストを再試行するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-30 20:58:30406ブラウズ

How to Retry Failed HTTP Requests in Go?

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。