简单的PRC和Protobuf服务

hyper-rpc的Python项目详细描述


超级rpc

Build Status

带Protobuf服务的简单RPC

在引擎盖下使用grpcio_toolspurerpc。在

安装

$ pip install hyper-rpc

示例

TLDR; See the example directory

greeter.proto中定义RPC服务。在

^{pr2}$

然后使用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

向前走Remote Procedure Call。在

The person who invented the term RPC

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在某些练习中避免索引异常   java Android,如何在具有socket的网络区域上提高性能?   更改web中的执行顺序后,JavaServlet过滤器不起作用。xml   java如何绑定泛型类?   JavaGmail RESTAPI:使用Google凭证而不模拟   java是解码整数序列的最快方法   java根据hashmaps的值(通过map的值进行比较)对hashmaps的数组列表进行排序   用于JBoss 7.1或Apache的java负载平衡器,带有Healt检查   java非常慢的MySQL读取性能   java如何在使用iRetryAnalyzer时从Windows CMD关闭Selenium WebDriver?   java随机闪烁仅出现在Galaxy Note 4上   java AttributeOverride MappedSuperClass属性的类型不同   java JPA:如何检测现有实体是否已更新?   java如何使用mavenassemblyplugin从dependencySet中删除METAINF?   安装SecurityManager时,java MQQueueManager构造函数挂起