如果RPC没有超时机制,如果它试图调用已关闭服务器的RPC方法,该如何“杀死” RPC调用?
您可以使用渠道实施超时模式:
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经过。
select
client.Call
timeoutNanoseconds