簡體   English   中英

grpc 客戶端 python:如何創建 grpc 客戶端連接池以獲得更好的吞吐量?

[英]grpc client python: How to create grpc client connection pool for better throughput?

我們的用例是發出大量請求。 每個請求返回 1 MB 的數據。 現在,在客戶端,我們創建一個單獨的 GRPC 通道並在循環中運行以下 function

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 連接,對嗎?

gRPC 使用 HTTP/2 並且可以在一個連接上多路復用多個請求,並且 gRPC 客戶端連接應該在客戶端應用程序的生命周期內重復使用。

您提到的 Golang 鏈接說 WithGRPCConnectionPool 將用於平衡請求。 如果需要,您可能會搜索負載平衡,但請記住,負載平衡僅在您有多個 gRPC 服務器實例時才有意義。

如果您正在尋找一個受數據庫操作啟發的連接池,我想說您不必擔心它,因為使用 gRPC 時不存在打開連接開銷

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM