> 백엔드 개발 > Golang > 연속적인 Golang HTTP 요청으로 인해 예기치 않은 EOF 오류가 발생하는 이유는 무엇입니까?

연속적인 Golang HTTP 요청으로 인해 예기치 않은 EOF 오류가 발생하는 이유는 무엇입니까?

DDD
풀어 주다: 2024-12-15 22:15:13
원래의
566명이 탐색했습니다.

Why Do Successive Golang HTTP Requests Result in Unexpected EOF Errors?

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿