python grpc客户端如何管理连接?

时间:2020-06-25 08:04:21

标签: python sockets connection grpc grpc-python

何时完全由grpc客户端创建和关闭连接?
我从以下代码开始:

channel = grpc.insecure_channel('localhost:8888')
stub = myservice_pb2_grpc.MyServiceStub(channel)

声明channel是否在整个过程的生命周期内创建一个套接字? 即使我向insecure_channel()提供了无效的地址,也不会导致任何错误,直到发出第一个请求。

或者,仅在发出请求后才创建套接字,然后关闭?

1 个答案:

答案 0 :(得分:0)

在gRPC Python中,一个通道对象对应一个或多个TCP连接,具体取决于您的负载平衡策略。如果未选择任何负载平衡策略(这似乎是大多数用法),则可以,一个通道对应一个TCP连接。

只要打开通道对象本身,通道代表的连接将保持活动状态。因此,建议您使用客户端进程在许多RPC调用之间重用通道。还 建议您在不再需要频道时将其关闭。

有两种方法可以实现此目的。第一种是手动调用close方法:

channel = grpc.insecure_channel('localhost:8888')
# send some RPCs
channel.close()

另一种是使用上下文管理器:

with grpc.insecure_channel('localhost:8888') as channel:
  # send some RPCs