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
반응형
'Programming > Go' 카테고리의 다른 글
[Go] Publishing modules - pkg.go.dev 에 package 올리기 (0) | 2022.06.21 |
---|---|
[Go] defer / panic 함수 (0) | 2022.05.23 |
댓글