工作中遇到一个问题,上游服务通过grpc调用下游服务,但是由于下游服务负载太高导致上游服务的调用会随机出现超时的情况,但是有一点不太明确:超时之后,下游服务还会继续进行计算么?

于是自己写了一个damon试了一下:

client:

 1 # Copyright 2015 gRPC authors.
 2 #
 3 # Licensed under the Apache License, Version 2.0 (the "License");
 4 # you may not use this file except in compliance with the License.
 5 # You may obtain a copy of the License at
 6 #
 7 #     http://www.apache.org/licenses/LICENSE-2.0
 8 #
 9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14 """The Python implementation of the GRPC helloworld.Greeter client."""
15 
16 from __future__ import print_function
17 import logging
18 
19 import grpc
20 
21 import helloworld_pb2
22 import helloworld_pb2_grpc
23 
24 
25 def run():
26     # NOTE(gRPC Python Team): .close() is possible on a channel and should be
27     # used in circumstances in which the with statement does not fit the needs
28     # of the code.
29     with grpc.insecure_channel('localhost:50051') as channel:
30         stub = helloworld_pb2_grpc.GreeterStub(channel)
31         response = stub.SayHello(helloworld_pb2.HelloRequest(name='you'), timeout=30)
32     print("Greeter client received: " + response.message)
33 
34 
35 if __name__ == '__main__':
36     logging.basicConfig()
37     run()
View Code

相关文章: