我使用此代码连接到 grpc 服务器,并且clientConn
对象用于所有后续的 rpc 调用。maxDelay
设置为 5 秒。现在由于服务器上的一些问题,它没有响应 grpc 调用。所以我的客户每次rpc调用都等待很长时间。我需要以不同的方式设置超时吗?
b := grpc.BackoffConfig{
MaxDelay: maxDelay,
}
clientConn, err := grpc.Dial(serverAddress, grpc.WithBackoffConfig(b), grpc.WithInsecure())
if err != nil {
log.Println("Dial failed!")
return err
}
Run Code Online (Sandbox Code Playgroud)
您可以修改代码以添加超时,使用grpc.WithTimeout(5 * time.Second)
而不是使用MaxDelay
andgrpc.WithBackoffConfig(b)
来重试和重试延迟。
clientConn, err := grpc.Dial(serverAddress, grpc.WithTimeout(5 * time.Second), grpc.WithInsecure())
if err != nil {
log.Println("Dial failed!")
return err
}
Run Code Online (Sandbox Code Playgroud)
然而,上面的内容已被弃用,或者您可以使用DialContext
和context.WithTimeout
ctx, _ := context.WithTimeout(context.Background(), 5*time.Second)
clientConn, err := grpc.DialContext(ctx, serverAddress, grpc.WithInsecure())
if err != nil {
log.Println("Dial failed!")
return err
}
Run Code Online (Sandbox Code Playgroud)