工作中遇到一个问题,上游服务通过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()