python的gRPC示例

python的gRPC示例,第1张

概述参考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, P

参考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示例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1213689.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存