gpt4 book ai didi

python - 拆分服务程序 gRPC python

转载 作者:太空宇宙 更新时间:2023-11-04 02:33:24 25 4
gpt4 key购买 nike

构建我的第一个 gRPC 服务器应用程序。我不知道这是否是一个常见问题,但我的 rpc 服务程序变得相当大。

对于服务程序,我指的是从生成的 xxx_pb2_grpc.xxxServicer 继承的类(至少在 python 中)。

目前它有 19 个 RPC 调用。所以我实现这些调用的类变得非常大。考虑到一些 RPC 调用用于音乐播放,一些用于数据管理,一些用于与下载器通信(可能还会有更多),是否有任何方法可以将 Servicer 分成逻辑段。

我可以在 proto 文件中创建多个 service 类型,但是 xxx_pb2_grpc.add_xxxServicer_to_server 只接受一个 servicer!

提前致谢。

编辑:2 月 3 日,18 日

我已将服务拆分为以下庄园:

service MusicPlayback {
... # rpc calls
}

service DataManager {
... # rpc calls
}

service MediaDownloader {
... # rpc calls
}

然后使用生成的 python 代码,我设置了这样的服务器:

# Setup gRPC Server
self._gserver = grpc.server(futures.ThreadPoolExecutor(max_workers=self._connection_count))
rpc.add_MusicPlaybackServicer_to_server(self._mplayer, self._gserver)
rpc.add_DataManagerServicer_to_server(self._data_manager, self._gserver)
rpc.add_MediaDownloaderServicer_to_server(self._media_downloader, self._gserver)
self._gserver.add_insecure_port('[::]:' + str(self._port))

最佳答案

xxx_pb2_grpc.add_xxxServicer_to_server 确实只接受一个服务程序。但是您可以创建单个服务器,将其传递给 xxx_pb2_grpc.add_xxxServicer_to_server,然后(同一台服务器)也将其传递给 xxx_pb2_grpc.add_xxxxxxxxxxxxxServicer_to_serveryyy_pb2_grpc.add_yyyServicer_to_server zzz_pb2_grpc.add_zzzServicer_to_server。利用单个服务器可以服务任意多个服务(每个服务由一个服务程序实现)这一事实,应该可以防止服务增长到大量不相关的 RPC 方法。

关于python - 拆分服务程序 gRPC python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48531943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com