当前位置 : 主页 > 大数据 > 区块链 >

go – RPC是否有超时机制?

来源:互联网 收集:自由互联 发布时间:2021-06-22
如果RPC没有超时机制,如果它试图调用已关闭的服务器的RPC方法,如何“终止”RPC调用? 您可以使用 channels来实现超时模式: import "time"c := make(chan error, 1)go func() { c - client.Call("Service", a
如果RPC没有超时机制,如果它试图调用已关闭的服务器的RPC方法,如何“终止”RPC调用? 您可以使用 channels来实现超时模式:

import "time"

c := make(chan error, 1)
go func() { c <- client.Call("Service", args, &result) } ()
select {
  case err := <-c:
    // use err and result
  case <-time.After(timeoutNanoseconds):
    // call timed out
}

select将阻塞,直到client.Call返回或timeoutNanoseconds过去.

网友评论