Programming/Go

[Go] grpc connection timeout 추가

guru_k 2022. 5. 23. 19:43
728x90
반응형

grpc connection timeout을 추가하기

1. Dial 사용

Dial은 주어진 주소로 client connection을 생성합니다.

Dial 함수의 구현부를 보면 DialContext를 호출하기 때문에 Dial 함수는 deprecated되었고 DialContext를 통해 구현하는것이 좋습니다.

// Dial 구현부
func Dial(target string, opts ...DialOption) (*ClientConn, error) {
	return DialContext(context.Background(), target, opts...)
}

grpc.WithTimeout 사용

connection, err := grpc.Dial(address, grpc.WithInsecure(), grpc.WithTimeout(5 * time.Second))
if err != nil {
    fmt.Println("connection failed :", err)
    return
}

2. DialContext 사용

DialContext 역시 주어진 주소로 client connection을 생성합니다.

그러나 DialContext는 default가 non-blocking dial로 동작하며 blocking dial이 필요할 경우 WithBlock() Dial 옵션을 사용하여야 합니다.

ctx, _ := context.WithTimeout(context.Background(), grpcConTimeout)
connection, err := grpc.DialContext(ctx, address, grpc.WithInsecure())
if err != nil {
    fmt.Println("connection failed :", err)
    return
}

 

728x90
반응형