Maison > développement back-end > Golang > le corps du texte

Comment réessayer les requêtes HTTP ayant échoué dans Go ?

Barbara Streisand
Libérer: 2024-10-30 20:58:30
original
366 Les gens l'ont consulté

How to Retry Failed HTTP Requests in Go?

Réessayer les requêtes HTTP ayant échoué dans Go

Lorsque vous essayez de transmettre des données à un serveur Apache à l'aide de GoLang et que vous rencontrez une erreur, il est crucial de prendre en compte si la requête HTTP sera automatiquement réessayée. La réponse à cette question est négative, ce qui signifie que vous devez implémenter un mécanisme de nouvelle tentative personnalisé.

Dans le code fourni, vous utilisez la méthode http.DefaultClient.Do pour exécuter la requête. Cette méthode ne gère pas automatiquement les tentatives en cas d'indisponibilité du serveur ou d'autres erreurs. Pour intégrer une logique de nouvelle tentative, vous pouvez adopter une approche personnalisée, comme démontré dans l'exemple suivant :

<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>
Copier après la connexion

Dans cet exemple, la fonction time.Sleep a été utilisée pour introduire un délai entre les tentatives. Vous pouvez ajuster le délai en fonction des exigences spécifiques de votre application. N'oubliez pas de gérer toutes les exceptions ou erreurs pouvant survenir lors du processus de nouvelle tentative, garantissant ainsi la stabilité et la fiabilité de votre transfert de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal