我们的用例是发出大量的请求。每个请求返回1MB的数据。现在,在客户端,我们创建一个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连接,对吗?
发布于 2020-08-16 18:40:28
gRPC使用超文本传输协议/2,可以在一个连接上多路传输多个请求,并且gRPC客户端连接应该在客户端应用程序的生命周期中重复使用。
您提到的Golang链接显示WithGRPCConnectionPool将用于平衡请求。如果需要,您可能会搜索负载平衡,但请记住,只有当您有多个gRPC服务器实例时,负载平衡才有意义。
如果您正在搜索受使用数据库时所做工作启发的连接池,我建议您不必担心,因为使用gRPC时不存在打开连接的开销
https://stackoverflow.com/questions/63404291
复制相似问题