[go] net/http 패키지를 사용한 클라이언트 타임아웃 설정

Go 언어로 네트워크 요청을 보내는 경우, 클라이언트 타임아웃 설정은 매우 중요합니다. 네트워크 연결이 끊기거나 응답 시간이 너무 오래 걸리면 애플리케이션이 느려지거나 멈출 수 있기 때문입니다. Go 언어의 net/http 패키지를 사용하여 클라이언트 타임아웃을 설정하는 방법을 알아보겠습니다.

net/http 패키지

net/http 패키지는 Go 언어의 표준 라이브러리로, HTTP 클라이언트와 서버를 구현하는 데 사용됩니다. HTTP 클라이언트를 만들고 네트워크 요청을 보내는 데 사용됩니다.

package main

import (
	"net/http"
	"time"
	"fmt"
	"log"
)

func main() {
	client := &http.Client{
		Timeout: time.Second * 10, // 클라이언트 타임아웃 설정
	}
	
	resp, err := client.Get("https://example.com")
	if err != nil {
		log.Fatal(err)
	}

	defer resp.Body.Close()
	
	fmt.Println("Response status:", resp.Status)
}

위의 예제에서는 net/http 패키지를 사용하여 클라이언트를 생성하고, Timeout 속성을 사용하여 클라이언트의 타임아웃을 10초로 설정합니다.

클라이언트가 요청을 보내고 서버로부터 응답을 받을 때까지 시간이 10초를 초과하면, Get 메서드는 http.ErrHandlerTimeout 오류를 반환합니다.

이렇게 클라이언트 타임아웃을 설정하면, 네트워크 요청이 지연되는 경우 애플리케이션이 긴 시간 동안 차단되는 것을 방지할 수 있습니다.

위의 예제에서 Timeout을 사용하여 클라이언트의 타임아웃을 설정하는 방법에 대해 알아보았습니다. 네트워크 연결과 관련된 기능을 구현할 때 이러한 점에 유의하여 안정적인 애플리케이션을 개발할 수 있습니다.

참고 자료