gRPC 会话:生命周期和持久性

时间:2021-07-12 15:43:10

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

我已经实现了一个 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 会增加吗? 每个客户端会绑定多个实例吗? 该实例将存在多久?是否在每次新调用时重新创建?

1 个答案:

答案 0 :(得分:0)

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

会话:没有会话管理。

Servicer Lifetime:Servicer 实例持续到服务器终止。

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