如何解决golang:grpc呼叫超时
我正在使用以下代码连接到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
}
解决方法
您可以修改代码以使用grpc.WithTimeout(5 * time.Second)
来添加超时,而不是使用用于重试和重试延迟的MaxDelay
和grpc.WithBackoffConfig(b)
。
clientConn,err := grpc.Dial(serverAddress,grpc.WithTimeout(5 * time.Second),grpc.WithInsecure())
if err != nil {
log.Println("Dial failed!")
return err
}
但是不建议使用上述方法,也可以使用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
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。