연속 호출 중 Golang HTTP 요청의 예기치 않은 EOF 오류
표준 net/http 패키지를 사용하는 동안 발생하는 비정상적인 오류를 해결하기 위한 시도 , 여러 HTTP 요청을 할 때 사용자가 간헐적으로 EOF(파일 끝) 예외를 보고했습니다.
사용자가 제공한 코드 조각에는 GET 및 PUT 요청에 대한 테스트 기능이 포함되어 있으며, 실행 중에 산발적으로 오류가 발생했습니다.
문제 해결
코드를 분석한 결과, 근본적인 원인은 부적절한 요청 처리와 관련이 있는 것으로 밝혀졌습니다. 특히 Req.Close 필드가 명시적으로 true로 설정되지 않았습니다.
제공된 코드에서는 defer resp.Body.Close() 구문을 사용하여 응답 본문 닫기를 처리했습니다. 그러나 이는 불충분한 것으로 판명되었으며 적절한 요청 처리를 보장하려면 Req.Close를 true로 설정해야 했습니다.
업데이트된 코드
다음 코드 조각은 올바르게 설정하는 방법을 보여줍니다. Req.Close:
client := &http.Client{} req, err := http.NewRequest(method, url, httpBody) // **NOTE** this !! req.Close = true req.Header.Set("Content-Type", "application/json") req.SetBasicAuth("user", "pass") resp, err := client.Do(req) if err != nil { // whatever } defer resp.Body.Close() response, err = ioutil.ReadAll(resp.Body) if err != nil { // Whatever }
해결 방법
Req.Close를 true로 설정하면 HTTP 요청이 올바르게 닫히는 것을 효과적으로 보장하여 EOF 오류가 발생하는 것을 방지할 수 있습니다. 이번 변경 사항을 구현함으로써 여러 요청 시 사용자의 테스트 기능이 일관되게 통과되어 문제가 해결되었습니다.
위 내용은 연속적인 Golang HTTP 요청으로 인해 예기치 않은 EOF 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!