Python:缓存grpc连接的最佳方法?

Python:缓存grpc连接的最佳方法?,python,grpc,Python,Grpc,我正在网络层与GRPC一起构建DHT 我已确定瓶颈来自建立连接: async def sendFindNode(self, to_address, target_id, from_id, from_address): try: async with grpc.aio.insecure_channel(to_address) as channel: stub = helloworld_pb2_grpc.Greeter

我正在网络层与GRPC一起构建DHT

我已确定瓶颈来自建立连接:


    async def sendFindNode(self, to_address, target_id, from_id, from_address):
        try:
            async with grpc.aio.insecure_channel(to_address) as channel:
                stub = helloworld_pb2_grpc.GreeterStub(channel)
                results = []
                async for response in stub.FindNode(
                        helloworld_pb2.FindNodeRequest(target_id=str(target_id), from_id=str(from_id),
                                                       from_address=str(from_address)), timeout=0.5):
                    results.append(response)
                return results
        except grpc.aio.AioRpcError as e:
            return None


我的问题是:缓存grpc连接的最佳方式是什么?我是否应该从
节点地址->不安全通道手动创建映射?或者GRPC库中是否有内置的方式来启用缓存?

GRPC确实会为您缓存连接,但是如果您在函数调用中使用带
块的
,则每次调用函数后都会关闭通道。相反,保持频道开放,并将频道传递给其他功能。您也不必使用上下文管理器,您可以自己显式地关闭通道——这就是上下文管理器所做的一切。