【问题标题】:gRPC Sessions: Lifecycle And PersistencegRPC 会话:生命周期和持久性
【发布时间】:2021-09-21 18:55:45
【问题描述】:

我已经实现了一个 gRPC 服务器来将来自客户端进程的任务委托给这个服务器。

考虑到多个客户端,我想知道 Servicer-Class 是暂时的还是永久的。

我导出服务者如下:

class MyServicer(my_pb2_grpc.MyServicer):

    def __init__(self):
        self.attrA = 0
        self.attrB = 0
        self.attrC = 0

    def rpcMethodA(self, request, context):
        self.attrA += 1
    def rpcMethodB(self, request, context):
        ...

服务器启动方式

server = grpc.server(futures.ThreadPoolExecutor())
my_pb2_grpc.add_MyServicer_to_server(MyServicer(), server)
server.add_insecure_port('[::]:50000')
server.start()

如图所示,MyServicer 具有每个实例的属性。那个对象被维护了吗? attrA 是否会为由一个特定客户端调用的服务程序类的一个实例增加? 每个客户端会绑定多个实例吗? 该实例将存在多长时间?每次新调用时都会重新创建它吗?

【问题讨论】:

    标签: networking protocol-buffers grpc rpc grpc-python


    【解决方案1】:

    通过测试行为,gRPC Servicer 暴露了这种行为:

    会话:无会话管理。

    服务者生命周期:服务者实例持续到服务器终止。

    派生服务用于连接到服务器的每个客户端。只要服务器运行,attrA 属性就会递增。

    【讨论】:

      猜你喜欢
      • 2011-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-21
      • 2016-11-21
      • 2014-08-03
      • 2014-08-10
      相关资源
      最近更新 更多