Heim > Artikel > Backend-Entwicklung > Wiederholt „http.DefaultClient.Do(req)“ von GoLang HTTP-Anfragen automatisch, wenn der Server nicht verfügbar ist?
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!