参考URL:
https://segmentfault.com/a/1190000015220713?utm_source=channel-hottest
gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 http/2 设计。目前提供 C、Java 和 Go 语言版本,分别是:grpc,grpc-java,grpc-go. 其中 C 版本支持 C,C++,Node.Js,Python,Ruby,Objective-C,PHP 和 C# 支持.
gRPC 基于 http/2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。
一,hello.proto文件内容
// 文件名 hello.protoSyntax = "proto3";package hello;// The greeting service deFinition.service Greeter { // Sends a greeting rpc SayHello (HelloRequest) returns (HelloReply) {}}// The request message containing the user‘s name.message HelloRequest { string name = 1;}// The response message containing the greetingsmessage HelloReply { string message = 1;}
二,rRPC工具编译命令
python -m grpc_tools.protoc -I./ --python_out=. --grpc_python_out=. ./hello.proto
生成了两个文件:
hello_pb2.py
此文件包含生成的 request(HelloRequest
) 和 response(HelloReply
) 类。 hello_pb2_grpc.py
此文件包含生成的 客户端(GreeterStub
)和服务端(GreeterServicer
)的类。 虽然现在已经生成了服务端和客户端代码,但是我们还需要手动实现以及调用的方法。
三,greeter_server.py文件内容
from concurrent import futuresimport timeimport grpcimport hello_pb2import hello_pb2_grpc_ONE_DAY_IN_SECONDS = 60 * 60 * 24class Greeter(hello_pb2_grpc.GreeterServicer): # 工作函数 def SayHello(self,request,context): return hello_pb2.HelloReply(message=‘Hello,%s!‘ % request.name)def serve(): # gRPC 服务器 server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) hello_pb2_grpc.add_GreeterServicer_to_server(Greeter(),server) server.add_insecure_port(‘[::]:50051‘) server.start() # start() 不会阻塞,如果运行时你的代码没有其它的事情可做,你可能需要循环等待。 try: while True: time.sleep(_ONE_DAY_IN_SECONDS) except KeyboardInterrupt: server.stop(0)if __name__ == ‘__main__‘: serve()
四,greeter_clIEnt.py文件内容
from __future__ import print_functionimport grpcimport hello_pb2import hello_pb2_grpcdef run(): channel = grpc.insecure_channel(‘localhost:50051‘) stub = hello_pb2_grpc.GreeterStub(channel) response = stub.SayHello(hello_pb2.HelloRequest(name=‘goodspeed‘)) print("Greeter clIEnt received: " + response.message)if __name__ == ‘__main__‘: run()
五,运行效果
总结
以上是内存溢出为你收集整理的python的gRPC示例全部内容,希望文章能够帮你解决python的gRPC示例所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)