如何将gRPC与asyncio结合使用

时间:2018-12-22 18:14:22

标签: python python-asyncio

在哪里可以找到将gRPC与asyncio一起使用的示例,特别是如何使用gRPC和asyncio创建客户端

3 个答案:

答案 0 :(得分:7)

从1.32版开始,gRPC现在在其Python API中支持asyncio。如果您使用的是早期版本,则仍可以通过实验性API from grpc.experimental import aio使用asyncio API。异步hello world example也已添加到gRPC存储库中。以下代码是示例客户端的副本:

import logging                                                                  
import asyncio                                                                  
from grpc import aio                                                            
                                                                                
import helloworld_pb2                                                           
import helloworld_pb2_grpc                                                      
                                                                                
                                                                                
async def run():                                                                
    # NOTE(gRPC Python Team): .close() is possible on a channel and should be    
    # used in circumstances in which the with statement does not fit the needs    
    # of the code.                                                              
    async with aio.insecure_channel('localhost:50051') as channel:              
        stub = helloworld_pb2_grpc.GreeterStub(channel)                         
        response = await stub.SayHello(helloworld_pb2.HelloRequest(name='you'))    
    print("Greeter client received: " + response.message)                       
                                                                                
                                                                                
if __name__ == '__main__':                                                      
    logging.basicConfig()                                                       
    asyncio.run(run())

有关如何实现服务器的信息,请参见my other answer

答案 1 :(得分:0)

gRPC Python当前与asyncio不兼容。请参阅https://github.com/grpc/grpc/issues/6046上的求助/功能请求。

答案 2 :(得分:0)

gRPC对AsyncIO的支持现已普遍可用,您可以在这里找到文档:https://grpc.github.io/grpc/python/grpc_asyncio.html