在使用grpc的时候遇到了一个问题: 如何设置client端的超时时间? 网上搜了一大圈, 没有太明显的例子.
这里我们先看下看看grpc的helloworld例子:
client
| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 |  | 
稍微跟一下SayHello的调用, 最后是调用到invoke函数:
google.golang.org/grpc/call.go
| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 |  | 
这里值得注意的是context的超时设置. 仔细读下context的文档, 会发现context里面有对应的超时设置:
WithTimeout
| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 |  | 
我们尝试在client调用之前设置context的超时:
client
| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 |  | 
为保证超时, 在sever代码中休息一会儿:
server
| 1
2
3
4
5
 |  | 
分别运行client和server两个程序, 会看见client端打印:
| 1
 |  | 
原文:https://www.cnblogs.com/ExMan/p/12119025.html