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

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

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

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

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

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

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

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

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

今天的分享仅介绍 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 开发的一种数据序列化协议(类似于XMLJSON、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 删除。

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

评论
登录后参与评论
2 条评论
热度
最新
答非所问,ubuntu 没有yum, 用 apt 你这样浪费别人时间,真可耻
答非所问,ubuntu 没有yum, 用 apt 你这样浪费别人时间,真可耻
回复回复2举报
很有用,点赞
很有用,点赞
回复回复点赞举报
推荐阅读
Centos7更换yum镜像源
2、下载对应版本repo文件, 放入/etc/yum.repos.d/(操作前请做好相应备份) 以CentOS7-Base-163.repo为例
全栈程序员站长
2022/09/02
7.6K0
linux怎样配置yum源_linux修改yum源地址
因为ubuntu系统本身是没有yum源的、所以要想使用yum源、必须自己手动配置:
全栈程序员站长
2022/09/21
6.7K0
CentOS 5至CentOS 5.8 YUM 源
本源是http://mirrors.163.com的,也可用http://centos.ustc.edu.cn/的,
三杯水Plus
2018/11/14
5.2K0
centos5的yum源
CentOS-Base.repo root@mirrors:~# cat /etc/yum.repos.d/CentOS-Base.repo # CentOS-Base.repo # # The mirror system uses the connecting IP address of the client and the # update status of each mirror to pick mirrors that are updated to and # geographically cl
用户6792968
2022/06/27
8220
yum源配置
在配置yum前首先得说说rpm,在redhat和centos linux系统上,rpm作为软件包管理工具,可以方便的安装、查询、卸载软件包。常见命令如下:
我的小碗汤
2018/08/22
5.4K0
yum源配置
Linux下更换默认yum源为网易yum源的操作记录
废话不多说,下面记录了centos下更换系统默认yum源为网易yum源的操作过程: 1)备份原有的默认yum源 [root@bastion-IDC ~]# cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak 2)修改CentOS-Base.repo文件。将文件中的baseurl地址修改为网易163的yum源地址即可! [root@bastion-IDC ~]# vim /etc/yum.repos.d/Ce
洗尽了浮华
2018/01/23
3.9K0
Linux下更换默认yum源为网易yum源的操作记录
Redhad 7改用CentOS7 yum源【亲测】
redhat 默认自带的 yum 源需要注册,才能更新。我们想不花钱,需要替换掉redhat的yum源,最好是国内的源。
程裕强
2022/05/06
1.7K0
Redhad 7改用CentOS7 yum源【亲测】
中标麒麟配置本地yum源_优麒麟系统安装
在 linux 系统上,解决软件包之间的依赖关系是很重要的事。很多工作无法实现可能就是因为缺少一个软件包,而当你千方百计找到这个软件包的时候,却发现它跟当前系统不兼容。所以,要做的非常重要的一件事情就是给系统添加软件仓库,以确保能安装使用大部分软件包。(亲测)建议看完文章再动手配置【换源之后不建议对系统软件全部进行更新】
全栈程序员站长
2022/09/22
6.3K0
中标麒麟配置本地yum源_优麒麟系统安装
VMWare 11安装RedHat Linux 7过程中碰到的坑
VMWare11安装RedHat Linux 7过程中会碰到一些坑,这里列举一些。
bisal
2021/09/06
6010
VMWare 11安装RedHat Linux 7过程中碰到的坑
yum扩展源、下载rpm包、源码包安装 原
说明: 执行完curl命令后,原有yum源文件CentOS-Base.repo被替换成CentOS7-Base-163.repo。查看该yum源文件:
阿dai学长
2019/04/03
3.6K0
搭建私有YUM仓库_及_内网镜像站
搭建私有YUM仓库(自己定制的rpm包) 私有yum仓库环境 系统版本:centos7.4 IP:192.168.1.47 #最好能上公网
小陈运维
2021/10/13
1.7K0
使用Nexus配置Linux Yum Repository代理
在生产环境中,我们不可能所有的服务器都能连接外网更新RPM包,比较理想的环境是:有一台Linux服务器可以连接外网,剩余的服务器通过这台YUM服务器更新。以前比较传统的做法是先把包下载到内网中的YUM服务器上,然后通过createrepo命令生成本地仓库,其余服务器通过HTTP访问这个链接,这种做法比较费时费事。有没有一种比较好的方式,让我们直接通过这台服务器代理连接到公网的163、阿里 YUM仓库呢,这就是本次介绍的Nexus代理。无论你的客户机是CentOS6还是CentOS7又或者是Ubuntu,不论你是想用YUM还是PIP又或者是NPM包管理器,Nexus都能满足你的需求。
星哥玩云
2022/07/14
4.6K0
CentOS6.3 x86_64 yum 源
CentOS6.3 x86_64 yum 源 cat CentOS-Base.repo # CentOS-Base.repo # # The mirror system uses the connecting IP address of the client and the # update status of each mirror to pick mirrors that are updated to and # geographically close to the client.  You
三杯水Plus
2018/11/14
8500
基于cephfs搭建高可用分布式存储并mount到本地
原文:https://www.fullstackmemo.com/2018/10/11/cephfs-ha-mount-storage/
sunsky
2020/08/20
2.9K0
基于cephfs搭建高可用分布式存储并mount到本地
基于centos7 搭建storm1.2.3集群过程
用上文中的内容,替换原有的centos-base.repo 之后 epel 包需要安装
冬天里的懒猫
2020/08/03
6210
CentOs6 Yum 源失效 404[通俗易懂]
YumRepo Error: All mirror URLs are not using ftp, http[s] or file. Eg. Invalid release/repo/arch combination/ removing mirrorlist with no valid mirrors: /var/cache/yum/x86_64/6/base/mirrorlist.txt Error: Cannot find a valid baseurl for repo: base
全栈程序员站长
2022/08/29
8540
为centos添加第三方源[未试验] 转
为什么80%的码农都做不了架构师?>>> 默认centos自带的源少了很多好软件,所以需要添加第三方源 一、安装CentOS yum源优先级插件yum-priorities yum insta
双面人
2019/05/21
9820
CentOS7_装机软件推荐
vim /etc/yum.repos.d/CentOS7-LocalServer.repo
全栈程序员站长
2022/07/05
6800
CentOS 6.5安装自动化工具Ansible和图形化工具Tower
[root@ansible-server etc]# lsb_release -a
用户8704835
2021/06/07
1.2K0
Red Hat Enterprise Linux 7.3更换CentOS 7 yum源
系统版本:Red Hat Enterprise Linux Server release 7.3 (Maipo)
用户8705048
2021/06/08
2K0
推荐阅读
相关推荐
Centos7更换yum镜像源
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档