我们的用例是发出大量请求。每个请求返回1 MB数据。现在,在客户端,我们创建了一个GRPC通道,并循环运行以下函数
content_grpc_channel = grpc.insecure_channel(content_netloc)
test_stub = test_pb2_grpc.ContentServiceInternalStub(
content_grpc_channel)
def get_feature_data_future(feature_id, span_context=()):
req_feature = test_pb2.GetFeatureRequest()
req_feature.feature_id = feature_id
resp_feature_future = test_stub.GetFeature.future(
req_feature, metadata=span_context)
return resp_feature_future
我的问题是在python中如何创建grpc客户端连接池以提高吞吐量?
在golang中,我看到了这个https://godoc.org/google.golang.org/api/option#WithGRPCConnectionPool,但是我很难在python中找到文档。
python中是否有这样的实用程序来创建grpc连接池?还是我应该创建多个grpc渠道并自己管理这些渠道?我假设每个通道都有不同的tcp连接,对吗?
答案 0 :(得分:0)
gRPC使用HTTP / 2,并且可以在一个连接上多路复用许多请求,并且应在客户端应用程序的生命周期内重新使用gRPC客户端连接。
您提到的Golang链接说,WithGRPCConnectionPool将用于平衡请求。您可以根据需要搜索负载平衡,但是请记住,只有在具有多个gRPC服务器实例的情况下,负载平衡才有意义。
如果您正在寻找一个受数据库处理方式启发的连接池,我会说您不必担心,因为使用gRPC时不存在开放的连接开销