前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python + gRPC 会擦出怎样的火花?

Python + gRPC 会擦出怎样的火花?

作者头像
Wu_Candy
发布2023-09-02 12:31:14
3420
发布2023-09-02 12:31:14
举报
文章被收录于专栏:无量测试之道
gRPC 是什么

gRPC 是搭建分布式应用接口和客户端的框架

在 gRPC 中,客户端应用程序可以直接调用不同机器上的服务器应用程序上的方法,就像它是本地对象一样,可以更容易创建分布式应用程序和服务

与许多 RPC 系统一样,gRPC 基于定义服务的思想,指定可以远程调用的方法及其参数和返回类型

在服务端实现这个接口并运行一个 gRPC 服务器来处理客户端调用

在客户端有一个存根(在某些语言中仅称为客户端),它提供与服务器相同的方法

gRPC 是一款高性能、开源的 RPC 框架,产自 Google,基于 ProtoBuf 序列化协议进行开发,支持多种语言(Golang、Python、Java等)

今天的分享仅介绍 Python 的 gRPC 使用,因为 gRPC 对 HTTP/2 协议的支持使其在 Android、IOS 等客户端后端服务的开发领域具有良好的前景

gRPC 提供了一种简单的方法来定义服务,同时客户端可以充分利用 HTTP2 stream 的特性,从而有助于节省带宽、降低 TCP 的连接次数、节省 CPU 的使用等

请见下图:

Python 客户端安装必备

pip install grpcio #gRPC 的安装

pip install protobuf #ProtoBuf 相关的 python 依赖库

pip install grpcio-tools #python grpc 的 protobuf 编译工具

重要的文件格式及用处,一般来说写 gRPC 服务,需要三个文件:

  • .proto文件:用于生成 gRPC 服务文件
  • server文件:定义 gRPC 服务端
  • client文件:定义 gRPC 客户端,调用服务端接口

第一类文件是.proto文件:定义传输的数据格式和 gRPC 服务要实现的函数

gRPC 是一套传输协议,我们需要在底层实现这套传输协议,当然这些工作都已经ready,所以我们只要学会使用一个具有 gRPC 传输协议的服务器和在客户端上调用 gRPC 传输协议传输数据就可以了

gRPC 传输协议传输的数据类型为 ProtoBuf 数据

ProtoBuf 是由 Google 开发的一种数据序列化协议(类似于XML、JSON、Hessian)

ProtoBuf能够将数据进行序列化,并广泛应用在数据存储、通信协议等方面,压缩和传输效率高,语法简单,表达力强,相关的演示示例代码可以网上找找,本文就不详细说明了

第二类文件是用.proto文件 + Python:调用如下命令生成的py文件,即上文所说的客户端文件

本示例中的服务器端文件由C++服务提供,所以配置好Ip & Port 后直接调用

这里以 Storage.proto 和 StorageService.proto 文件为示例进行展示,如下图所示:

python -m grpc_tools.protoc -I. --python_out=./package --grpc_python_out=./package ./Storage.proto

python -m grpc_tools.protoc -I. --python_out=./package --grpc_python_out=./package ./StorageService.proto

会生成*_pb2.py*_pb2_grpc.py,其中*_pb2.py是数据格式调用的文件,*_pb2_grpc.py是 gRPC 传输协议接口调用的文件

通过调用后端的C++存储服务来查询数据的示例演示:

输入:

输出:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-06-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 无量测试之道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • gRPC 是什么
  • Python 客户端安装必备
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档