我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么使用.proto 文件

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么使用.proto 文件

本篇内容介绍了“怎么使用.proto 文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

回想我年轻的时候,在做一个项目时,需要计算斐波那契数列第 n  项的值。但是我只会使用递归来实现。众所周知,递归算法计算斐波那契数列的效率极差,速度极慢。

于是我求助于当时我的师父,问他有没有办法帮我解决这个问题。

我师父说:“有啊,我写过,但是代码是用C++ 写的,你估计看不懂。不过没关系,你用 Python 直接调用就可以了。”

我很惊讶:“用 Python 直接调用C++代码吗?看起来似乎很麻烦啊。”

师父说:“一点也不麻烦。我给你一个.proto 文件和一个地址,你拿去自动生成代码就能调用了。”

于是,我拿到了一个mentors_secret.proto文件,里面的内容非常简单:

syntax = "proto3";   message NumToCalc {     int32 num = 1; }   message Result {     int32 result = 1;     string msg = 2;     bool success = 3; }   service MentorsSecret {     rpc CalcFib(NumToCalc) returns (Result) {} }

还有一个地址:122.51.39.219:8766。

原来是使用 gRPC 啊。这样我就知道怎么做了。

安装环境

首先,我们先安装Python 版本的gRPC:

pip install grpcio grpcio-tools

生成代码

接下来,基于这个mentors_secret.proto文件,自动生成代码。cd进入mentors_secret.proto文件所在的文件,执行下面的命令:

python3 -m grpc_tools.protoc -I . --python_out=. --grpc_python_out=. ./mentors_secret.proto

此时,可以看到当前文件夹中生成了两个文件:mentors_secret_pb2.py和mentors_secret_pb2_grpc.py。

如下图所示:

怎么使用.proto 文件

这两个文件的内容,不需要看。

调用远程服务

接下来,创建一个新文件,叫做client.py,用来调用远程的函数:

import grpc from mentors_secret_pb2 import NumToCalc from mentors_secret_pb2_grpc import MentorsSecretStub   channel = grpc.insecure_channel('122.51.39.219:8766') stub = MentorsSecretStub(channel)  result = stub.CalcFib(NumToCalc(num=36)) print('斐波那契数列第36像是:', result.result)

代码加上空行总共只有10行。1-3行导入模块,6,7行创建远程链接。第9行调用远程的函数。第10行打印结果。

我们来看看运行效果:

怎么使用.proto 文件

运行结果秒出。

总结

当我们拿到一个.proto文件,需要去调用gRPC 服务时,我们一般有如下步骤:

(1) 自动生成mentors_secret_pb2.py和mentors_secret_pb2_grpc.py文件。

(2) 查看.proto文件里面,service后面的名字MentorsSecret,如下图所示:

怎么使用.proto 文件

(3) 编写固定的代码:

import grpc from mentors_secret_pb2_grpc import MentorsSecretStub # service 名字后面加上 Stub   channel = grpc.insecure_channel('远程服务地址和 端口') stub = MentorsSecretStub(channel)

(4) 调用远程函数。通过.proto文件,可以知道远程函数CalcFib接收一个参数NumToCalc,所以把它导入进来:from  mentors_secret_pb2 import NumToCalc,它里面的参数为num,所以调用远程服务时赋值:

para = NumToCalc(num=36) calc_result = stub.CalcFib(para)

(5) 从.proto知道返回的结果是Result里面的result属性。于是打印calc_result.result获得结果。

“怎么使用.proto 文件”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么使用.proto 文件

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

windows下如何使用GoLand生成proto文件

本文小编为大家详细介绍“windows下如何使用GoLand生成proto文件”,内容详细,步骤清晰,细节处理妥当,希望这篇“windows下如何使用GoLand生成proto文件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来
2023-07-02

我想从 cmd 的 proto 文件生成 protobuf,而不使用“option go_package ”

php小编草莓,你提到你想从cmd的proto文件生成protobuf,而不使用"option go_package"。在这种情况下,你可以尝试使用其他方法来生成protobuf文件。有一些工具可以帮助你实现这个目标,例如使用插件或自定义脚
我想从 cmd 的 proto 文件生成 protobuf,而不使用“option go_package ”
2024-02-09

gRPC实践之proto及Maven插件概念及使用详解

这篇文章主要为大家介绍了gRPC实践之proto及Maven插件概念及使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-05-16

文件服务器软件怎么使用

文件服务器软件可以用来搭建一个文件共享平台,使得多个用户可以同时访问和共享文件。下面是文件服务器软件的基本使用步骤:1. 下载并安装文件服务器软件,如FileZilla Server、OwnCloud等。2. 启动软件,设置管理员账号和密码
2023-06-10

Android怎么使用自带文件

在Android设备上,可以使用自带文件管理器来浏览、操作和管理设备上的文件。以下是使用自带文件管理器的基本步骤:1. 打开应用程序列表,找到并点击“文件管理器”或“文件”应用图标。2. 文件管理器应用程序将打开,并显示设备存储和SD卡(如
2023-08-12

怎么使用filechannel读取文件

要使用FileChannel读取文件,可以按照以下步骤进行操作:打开一个文件Channel,可以使用FileInputStream或RandomAccessFile来创建一个FileChannel对象。示例代码如下:FileChannel
2023-10-23

怎么使用Python临时文件

小编给大家分享一下怎么使用Python临时文件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、前言临时文件通常用来保存无法保存在内存中的数据,或者传递给必须从文
2023-06-14

Linux下怎么使用pcap文件

今天小编给大家分享一下Linux下怎么使用pcap文件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。pcap文件是常用的数据
2023-06-28

怎么使用GitHub上传文件

这篇文章主要介绍了怎么使用GitHub上传文件的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用GitHub上传文件文章都会有所收获,下面我们一起来看看吧。一、注册GitHub账号首先,在GitHub上传文
2023-07-05

怎么使用fileupload控件上传文件

要使用fileupload控件上传文件,你可以按照以下步骤操作:1. 在HTML页面中添加一个fileupload控件的标签,例如:```html```2. 使用JavaScript获取fileupload控件的引用,并为其添加一个chan
2023-08-23

使用jupyter怎么导入文件

使用jupyter怎么导入文件?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。操作环境:Windows7系统,Jupyter Notebook版本,Dell G3
2023-06-07

怎么使用Golang删除文件

本文小编为大家详细介绍“怎么使用Golang删除文件”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用Golang删除文件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。首先,我们需要导入os包。在Golan
2023-07-05

怎么使用ByteArrayOutputStream下载文件

本篇内容主要讲解“怎么使用ByteArrayOutputStream下载文件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用ByteArrayOutputStream下载文件”吧!使用By
2023-06-22

Python中CSV文件怎么使用

本篇内容介绍了“Python中CSV文件怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、csv文件介绍1、csv文件简介逗号分隔值
2023-07-02

编程热搜

目录