我已经实现了一个 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
会增加吗?
每个客户端会绑定多个实例吗?
该实例将存在多久?是否在每次新调用时重新创建?
答案 0 :(得分:0)
通过测试行为,gRPC Servicer 暴露了这种行为:
会话:没有会话管理。
Servicer Lifetime:Servicer 实例持续到服务器终止。
派生服务程序用于连接到服务器的每个客户端。只要服务器运行,属性 attrA
就会递增。