HTTP 요청 재시도 메커니즘
질문:
GoLang에서 http.DefaultClient를 실행할 때 .Do(req), 서버를 일시적으로 사용할 수 없는 경우 HTTP 요청이 자동으로 재시도를 시도합니까?
답변:
아니요, GoLang HTTP 클라이언트는 자동을 구현하지 않습니다. 재시도. 서버를 사용할 수 없는 경우를 처리하려면 사용자 정의 재시도 메커니즘을 구현해야 합니다.
재시도 패턴 구현:
구현할 수 있는 기본 재시도 패턴의 예는 다음과 같습니다.
<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>
이 예에서는 http.Get 요청이 루프에서 실행되어 서버에서 데이터를 가져오려고 시도합니다. 요청이 실패하면 루프는 재시도 횟수를 줄이고 모든 재시도가 소진되거나 요청이 성공할 때까지 계속됩니다. 요청이 성공하면 응답이 인쇄됩니다. 모든 재시도가 실패하면 오류 메시지가 기록됩니다.
위 내용은 GoLang의 `http.DefaultClient.Do(req)`는 서버를 사용할 수 없을 때 HTTP 요청을 자동으로 재시도합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!