python的gRPC示例
发布时间:2020-12-20 10:43:34 所属栏目:Python 来源:网络整理
导读:参考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.
参考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 syntax = "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 greetings message HelloReply { string message = 1; } ? 二,rRPC工具编译命令 python -m grpc_tools.protoc -I./ --python_out=. --grpc_python_out=. ./hello.proto 生成了两个文件:
虽然现在已经生成了服务端和客户端代码,但是我们还需要手动实现以及调用的方法。 三,greeter_server.py文件内容 from concurrent import futures import time import grpc import hello_pb2 import hello_pb2_grpc _ONE_DAY_IN_SECONDS = 60 * 60 * 24 class 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_function import grpc import hello_pb2 import hello_pb2_grpc def 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 – sklearn pipeline – 在管道中应用多项式特征转换
- Python,NLTK,无法导入“parse_cfg”?
- 如何使用numpy广播在条件下组合多索引列值
- Django框架下在URLconf中指定视图缓存的方法
- python-2.7 – ImportError:无法导入名称api – 在centos
- python – Graph_Tool – 使用用户定义的顶点文本绘制图形
- 自动备份交换机配置
- django – ‘HttpResponse’没有属性’_get_content
- python第三方库assertpy
- python – 所有盒子的相同颜色的Seaborn Boxplot