Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Adakah `http.DefaultClient.Do(req)` GoLang secara automatik Mencuba Semula Permintaan HTTP pada Ketidaktersediaan Pelayan?

Adakah `http.DefaultClient.Do(req)` GoLang secara automatik Mencuba Semula Permintaan HTTP pada Ketidaktersediaan Pelayan?

Patricia Arquette
Patricia Arquetteasal
2024-10-30 14:34:50900semak imbas

Does GoLang's `http.DefaultClient.Do(req)` Automatically Retry HTTP Requests on Server Unavailability?

Mekanisme Permintaan HTTP Cuba Semula

Soalan:

Dalam GoLang, apabila melaksanakan http.DefaultClient .Do(req), adakah percubaan permintaan HTTP cuba semula secara automatik jika pelayan tidak tersedia buat sementara waktu?

Jawapan:

Tidak, klien HTTP GoLang tidak melaksanakan automatik mencuba semula. Anda perlu melaksanakan mekanisme cuba semula tersuai untuk mengendalikan ketaksediaan pelayan.

Perlaksanaan Corak Cuba Semula:

Berikut ialah contoh corak cuba semula asas yang boleh anda laksanakan:

<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") // Replace with your server URL

        if err != nil {
            log.Println("Request failed", err)
            retries -= 1
        } else {
            break // Request succeeded, exit the retry loop
        }
    }

    if response != nil {
        defer response.Body.Close()
        data, err := ioutil.ReadAll(response.Body)
        if err != nil {
            log.Fatal(err)
        }
        fmt.Printf("Data received: %s", data)
    } else {
        log.Fatal("Unable to establish connection")
    }
}</code>

Dalam contoh ini, permintaan http.Get dilaksanakan dalam satu gelung, cuba mengambil data daripada pelayan. Jika permintaan gagal, gelung mengurangkan kiraan cuba semula dan diteruskan sehingga sama ada semua percubaan semula habis atau permintaan itu berjaya. Jika permintaan berjaya, respons akan dicetak. Jika semua percubaan semula gagal, mesej ralat direkodkan.

Atas ialah kandungan terperinci Adakah `http.DefaultClient.Do(req)` GoLang secara automatik Mencuba Semula Permintaan HTTP pada Ketidaktersediaan Pelayan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn