首页 / PYTHON / python gRPC接口调用
python gRPC接口调用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python gRPC接口调用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3065字,纯文字阅读大概需要5分钟。
内容图文
gRPC
-
gRPC官网
-
python实现gRPC接口调用的方法步骤
2.1 安装第三方包:grpcio、protobuf、grpcio_tools
1 pip install grpcio 2 pip install protobuf 3 pip install grpcio_tools # python下的protoc编译器
2.2 编写proto文件
参考protobuf语法编写.proto文件
2.3 编译proto文件
将protoc文件转化为pb2和pb2_grpc文件,操作步骤如下:
- 命令:
1 python3 -m grpc_tools.protoc --python_out=. --grpc_python_out=. -I. xxx.proto -I=/workspace -I=xxx/yyy/ 2 3#说明: 4 -I=:在proto文件中远程调用的内容,导入路径为实际调用的上一级目录即可。 5python_out:指定xxx_pb2.py的输出路径,编译生成处理protobuf相关的代码路径。传入.,则默认生成到当前目录。 6grpc_python_out:指定xxx_pb2_grpc.py的输出路径,编译生成处理grpc相关的代码路径,传入.,则默认生成到当前目录。 7grpc_tools.protoc:工具包,刚安装的。 8 -I:这个参数指定协议文件的查找目录。 910# 生成的文件中: 11xxx_pb2.py:里面有消息序列化类。是用来和protobuf数据进行交互。 12 xxx_pb2_grpc.py:包含了服务器Stub类和客户端Stub类,以及待实现的服务RPC接口。是用来和grpc进行交互。
2.4 写server端代码
demo如下:
1 # coding:utf-8 2 3 import grpc 4 import json 5 from concurrent import futures 6import xxx_pb2,yyy_pb2_grpc 7 8 _HOST = ‘‘# todo 9 _PORT = ‘‘# todo101112# 实现 proto 文件中定义的 xxxServicer13class xxxServer(yyy_pb2_grpc.xxxServicer): 14# 实现 proto 文件中定义的GRPC调用15def SendRequest(self, request, context): 16 json_response = xxx_pb2.xxxResponse() 17 json_response.rst_string = json.dumps({"ret": "Hi grpc"}) 18return json_response 192021def serve(): 22# 启动GRPC服务,监听特定的端口23 server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) # 多线程服务器24 yyy_pb2_grpc.add_xxxServicer_to_server(xxxServer(), server) # 注册本地服务25 server.add_insecure_port("{0}:{1}".format(_HOST, _PORT)) # 监听端口26 server.start() # 开始接收请求进行服务27try: 28while True: 29 time.sleep(60 * 60 * 24) # one day in seconds30except KeyboardInterrupt: 31 server.stop(0) 323334if__name__ == ‘__main__‘: 35 serve()
2.5 写client端代码
demo如下:
1 # coding:utf-8 2 3 import grpc 4 import xxx_pb2, yyy_pb2_grpc 5 6 _HOST = ‘‘# todo 7 _PORT = ‘‘# todo 8 910def main(): 11 with grpc.insecure_channel("{0}:{1}".format(_HOST, _PORT)) as channel: 12 client = yyy_pb2_grpc.xxxStub(channel=channel) 13 response = client.xxxMessage(xxx_pb2.xxxRequest()) 14print("received: " + response.message + response.result) 151617if__name__ == ‘__main__‘: 18 main()
2.6 完成
-
gRPC四种通信方式
- 客服端一次请求, 服务器一次应答
- 客服端一次请求, 服务器多次应答(流式)
- 客服端多次请求(流式), 服务器一次应答
- 客服端多次请求(流式), 服务器多次应答(流式)
protoc
-
protoc3官网
-
protobuf数据格式
-
python-protobuf
- 在python里也需要proto文件生成对应的代码,才能通过grpc/restful协议调后端的代码
- pb其实就是协议格式/内容,restful/rpc是协议
- 无关乎语言, 前端(python或go), 跟后端(go或者c++) 通信的时候,都要告知发送的内容的格式--这个格式就是pb
原文:https://www.cnblogs.com/sunshine-blog/p/12193064.html
内容总结
以上是互联网集市为您收集整理的python gRPC接口调用全部内容,希望文章能够帮你解决python gRPC接口调用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。