mel*_*tra 3 python protocol-buffers grpc
构建我的第一个 gRPC 服务器应用程序。我不知道这是否是一个常见问题,但我的 rpc 服务程序变得相当大。
对于服务程序,我指的是从生成的类继承的类xxx_pb2_grpc.xxxServicer(至少在Python中)。
目前它有 19 个 RPC 调用。所以我的实现这些调用的类变得非常大。考虑到一些 RPC 调用用于音乐播放,一些用于数据管理,一些用于与下载器通信(可能还会有更多调用),是否有任何方法可以将 Servicer 拆分为逻辑段。
service我可以在原型文件中创建多种类型,但xxx_pb2_grpc.add_xxxServicer_to_server只接受一个服务程序!
提前致谢。
编辑:18 年 2 月 3 日
我将服务划分为以下庄园:
service MusicPlayback {
... # rpc calls
}
service DataManager {
... # rpc calls
}
service MediaDownloader {
... # rpc calls
}
Run Code Online (Sandbox Code Playgroud)
然后生成 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))
Run Code Online (Sandbox Code Playgroud)
小智 5
确实xxx_pb2_grpc.add_xxxServicer_to_server只接受一个服务商。但是您可以创建一个服务器,将其传递给xxx_pb2_grpc.add_xxxServicer_to_server,然后还将它(同一服务器)传递给xxx_pb2_grpc.add_xxxxxxxxxxxxxServicer_to_server、yyy_pb2_grpc.add_yyyServicer_to_server和zzz_pb2_grpc.add_zzzServicer_to_server。通过利用单个服务器可以服务任意多个服务(每个服务使用一个服务程序实现)这一事实,应该可以防止服务增长为大量不相关的 RPC 方法。
| 归档时间: |
|
| 查看次数: |
1484 次 |
| 最近记录: |