何时完全由grpc客户端创建和关闭连接?
我从以下代码开始:
channel = grpc.insecure_channel('localhost:8888')
stub = myservice_pb2_grpc.MyServiceStub(channel)
声明channel
是否在整个过程的生命周期内创建一个套接字?
即使我向insecure_channel()
提供了无效的地址,也不会导致任何错误,直到发出第一个请求。
或者,仅在发出请求后才创建套接字,然后关闭?
答案 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