proto文件如下:
syntax = "proto3";
message UserRequest {
string user_id=1;
int32 channel_id=2;
int32 article_num=3;
int64 time_stamp=4;
}
message Track {
string click=1;
string collect=2;
string share=3;
string read=4;
}
message Article {
int64 article_id=1;
Track track=2;
}
message ArticleResponse {
string exposure=1;
int64 time_stamp=2;
repeated Article recommends=3;
}
service UserRecommend {
rpc user_recommend(UserRequest) returns(ArticleResponse) {}
}
生成Python代码
1.安装protobuf编译器和grpc库
pip install grpcio-tools
2.编译生成代码
python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. reco.proto
参数解释:
-I 表示搜索proto文件中被导入文件的目录 . 代表当前目录
--python_out 表示保存生成Python文件的目录,生成的文件中包含接口定义中的<数据message>类型
--grpc_python_out 表示保存生成Python文件的目录,生成的文件中包含接口定义中的<服务service>类型
reco.proto 编译的文件名
在xxx目录下执行上述命令,会自动生成如下两个rpc调用辅助代码模块:
reco_pb2.py 保存根据接口定义文件中的<数据message>类型生成的python类
reco_pb2_grpc.py 保存根据接口定义文件中的<服务service>方法类型生成的python调用RPC方法