Heim >Backend-Entwicklung >Golang >Wiederholt „http.DefaultClient.Do(req)' von GoLang HTTP-Anfragen automatisch, wenn der Server nicht verfügbar ist?

Wiederholt „http.DefaultClient.Do(req)' von GoLang HTTP-Anfragen automatisch, wenn der Server nicht verfügbar ist?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-30 14:34:50993Durchsuche

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

HTTP-Request-Retry-Mechanismus

Frage:

In GoLang beim Ausführen von http.DefaultClient .Do(req), wird der HTTP-Anfrageversuch automatisch wiederholt, wenn der Server vorübergehend nicht verfügbar ist?

Antwort:

Nein, der GoLang-HTTP-Client führt keine automatische Implementierung durch wiederholt. Sie müssen einen benutzerdefinierten Wiederholungsmechanismus implementieren, um die Nichtverfügbarkeit des Servers zu bewältigen.

Implementierung eines Wiederholungsmusters:

Hier ist ein Beispiel für ein grundlegendes Wiederholungsmuster, das Sie implementieren können:

<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>

In diesem Beispiel wird die http.Get-Anfrage in einer Schleife ausgeführt und versucht, Daten vom Server abzurufen. Wenn eine Anfrage fehlschlägt, verringert die Schleife den Wiederholungszähler und wird fortgesetzt, bis entweder alle Wiederholungsversuche ausgeschöpft sind oder die Anfrage erfolgreich ist. Wenn die Anfrage erfolgreich ist, wird die Antwort gedruckt. Wenn alle Wiederholungsversuche fehlschlagen, wird eine Fehlermeldung protokolliert.

Das obige ist der detaillierte Inhalt vonWiederholt „http.DefaultClient.Do(req)' von GoLang HTTP-Anfragen automatisch, wenn der Server nicht verfügbar ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn