一尘不染

RPC是否具有超时机制?

go

如果RPC没有超时机制,如果它试图调用已关闭服务器的RPC方法,该如何“杀死” RPC调用?


阅读 261

收藏
2020-07-02

共1个答案

一尘不染

您可以使用渠道实施超时模式:

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经过。

2020-07-02