grpc入门_helloWord
protocol buffers使用(简称pb)
pd文件中一般包含rpc服务定义以及消息定义
定义rpc服务 【grpc_python 入门】要定义一个服务,你必须在你的 .proto 文件中指定 service。然后在你的服务中定义 rpc 服务接口,指定请求的和响应的消息类型。具体定义如下:
rpc 服务名 (请求消息) returns (响应消息)
service R outeGuide
{ // (Method definitions not shown) rpc RouteChat (stream RouteNote)returns (stream RouteNote) {}
}
具体示例如下:
文章图片
定义消息
- 指定包名(pb避免冲突)
- 在.proto文件中定义消息,消息类似结构体形式有不同的字段组成(并且可以嵌套定义)。
- 消息中的每个字段有字段限制,字段类型,字段名,编号组成。
- required 必须填写
- optional 可选的
- repeated 重复的
syntax = "proto3";
package tutorial;
message Person
{
required string name = 1;
required int32 id = 2;
optional string email = 3;
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
}
message PhoneNumber {
required string number = 1;
optional PhoneType type = 2[default = HOME];
}repeated PhoneNumber phone = 4;
}
具体示例如下:
文章图片
生成gRPC客户端和服务器端代码 利用 filename.proto 文件的定义来 生成 gRPC客户端和服务端接口,可以通过 grpcio-tools 工具来生成对应的python代码。
具体实现命令如下:
python -m grpc_tools.protoc-I../../protos--python_out=.--grpc_python_out=.../../protos/route_guide.proto
- python -m grpc_tools.protoc : 用python来编译pd文件
- -I :指定源路径(pd文件)
- –python_out 、 --grpc_python_out :指定生成py文件的路径
- …/…/protos/route_guide.proto:指定源pd文件
- route_guide_pb2.py :主要是调用 .proto文件中数据
- route_guide_pb2_grpc.py
- BetaRouteGuideServicer 实现了 pd文件中 service RouteGuide 服务中定义的接口
- RouteGuideStub:可以被客户端初始化一个可以调用服务的 一个实例,也叫存根
文章图片
文章图片
GetFeature 在定义的时候 就是接收 的是 Point 类型的请求消息,返回的是Feature类型消息。
文章图片
其中self.db是一个json数据库,存放的是坐标信息和名称信息,具体信息如下:
文章图片
创建客户端 客户端就可以执行不同的请求,通过服务端得到对应的响应消息。
文章图片
- run方法 :初始化一个服务端实例 stub,并传递给 guide_get_ont_feature方法
- guide_get_feature方法:参数为 RouteGuideStub一个引用
- guide_get_one_feature方法 通过传递过来的Point消息,返回具体的响应消息。
推荐阅读
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Python专栏|数据分析的常规流程
- Python|Win10下 Python开发环境搭建(PyCharm + Anaconda) && 环境变量配置 && 常用工具安装配置
- Python绘制小红花
- Pytorch学习|sklearn-SVM 模型保存、交叉验证与网格搜索
- OpenCV|OpenCV-Python实战(18)——深度学习简介与入门示例
- python|8. 文件系统——文件的删除、移动、复制过程以及链接文件
- 爬虫|若想拿下爬虫大单,怎能不会逆向爬虫,价值过万的逆向爬虫教程限时分享
- 分布式|《Python3网络爬虫开发实战(第二版)》内容介绍
- java|微软认真聆听了开源 .NET 开发社区的炮轰( 通过CLI 支持 Hot Reload 功能)