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 중국어 웹사이트의 기타 관련 기사를 참조하세요!