简单的PRC和Protobuf服务
hyper-rpc的Python项目详细描述
超级rpc
带Protobuf服务的简单RPC
在引擎盖下使用grpcio_tools和purerpc。在
安装
$ pip install hyper-rpc
示例
TLDR; See the example directory
在greeter.proto
中定义RPC服务。在
然后使用hyper-rpc
生成服务和存根。在
$ pip install hyper-rpc $ hrpc greeter.proto
这将创建greeter_gprc.py
(服务)和greeter_pb2.py
(存根)文件。在
然后可以编写一个异步就绪服务器。在
"""Greeter server."""fromgreeter_grpcimportGreeterServicerfromgreeter_pb2importHelloReply,HelloRequestfrompurerpcimportServerclassGreeter(GreeterServicer):asyncdefSayHello(self,message):returnHelloReply(message=f"Hello {message.name}")asyncdefSayHelloToMany(self,input_messages):asyncformessageininput_messages:yieldHelloReply(message=f"Hello, {message.name}")if__name__=="__main__":server=Server(50055)server.add_service(Greeter().service)server.serve(backend="trio")
还有一个客户。在
"""Greeter client."""importanyioimportpurerpcfromgreeter_grpcimportGreeterStubfromgreeter_pb2importHelloReply,HelloRequestasyncdefgen():foriinrange(5):yieldHelloRequest(name=str(i))asyncdefmain():asyncwithpurerpc.insecure_channel("localhost",50055)aschannel:stub=GreeterStub(channel)reply=awaitstub.SayHello(HelloRequest(name="World"))print(reply.message)asyncforreplyinstub.SayHelloToMany(gen()):print(reply.message)if__name__=="__main__":anyio.run(main,backend="trio")
并在不同的终端上运行以查看输出。在
$ python server.py # terminal 1
$ python client.py # terminal 2
输出:
Hello, World
Hello, 0
Hello, 1
Hello, 2
Hello, 3
Hello, 4
- 项目
标签: