千家信息网

怎么使用.proto 文件

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容介绍了"怎么使用.proto 文件"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!回想我年轻的
千家信息网最后更新 2026年11月01日怎么使用.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。

如下图所示:

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

调用远程服务

接下来,创建一个新文件,叫做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文件,需要去调用gRPC 服务时,我们一般有如下步骤:

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

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

(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 文件"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

文件 代码 内容 函数 结果 服务 生成 接下来 地址 师父 数列 自动生成 两个 参数 名字 更多 知识 麻烦 C++ 递归 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手磨咖啡 北京互联网科技有限公司 互联网与未来科技 北京互联网络科技有限公司 远拓互联网科技 上海万想互联网科技 互联网科技股有哪些 哈尔滨新华互联网科技 互联网教育科技公司vipkid 来此购互联网科技有限公司 受益于互联网科技的高速发展 广西互联网科技孵化中心 南博望互联网科技有限公司 互联网金融科技名词解释 保险科技服务互联网营销体系 为客找房互联网科技公司怎么样 城市宝互联网科技有限公司 半导体行业属于互联网高科技类吗 扫呗互联网科技有限公司 新氧科技和美国互联网有关系吗 互联网科技卖菜 互联网养老 桔豆科技 衡水科技产业互联网平台 华脉科技工业互联网产品 互联网科技公司有风险吗 米聚互联网科技南京有限公司排面 富国互联网科技002692 山东大美朱楼互联网科技有限公司 扫呗互联网科技有限公司 亚光科技低轨卫星互联网
0