简介
grpc是谷歌开发的一套rpc框架
公司使用场景:grpc主要是golang服务内部调用,以及java和golang服务间的调用。
准备工作
pip install grpcio
pip install protobuf
pip install grpcio_tools
- 找开发拿到最近的proto文件,放到对应的目录下
- 使用命令生成xxxx_pb2.py文件与xxxx_pb2_grpc.py
python -m grpc_tools.protoc -I . --python_out=. --grpc_python_out=. roombase.proto
参数解释?
# python_out目录指定 xxxx_pb2.py的输出路径,我们指定为./ 当前路径
# grpc_python_out指定xxxx_pb2_grpc.py文件的输出路径,我们指定为./ 当前路径
# grpc_tools.protoc 这是我们的工具包,刚刚安装的
# -I参数指定协议文件的查找目录,我们都将它们设置为当前目录./
# roombase.proto 我们的协议文件
编写脚本调用接口
以调用roombase-go服务的BatchHot接口为例
头文件引入grpc 库以及上述生成的 xxxx_pb2.py与xxxx_pb2_grpc.py
HOST与PORT为服务相应环境的IP与grpc对应的端口
run()函 数中则是客户端的初始化以及实际发送grpc请求
import grpc
import roombase_pb2
import roombae_pb2_grpc
host = ""
port = ""
def run():
conn = grpc.insecure_channel(host + ":" + port)
client = roombase_pb2_grpc.RoomBaseStub(channel=conn)
res, call = client.BatchHot.with_call(
roombase_pb2.BatchReq(rids=[111,222]),
metadata=(('aid', '99999'))
)
print(str(res.hotMap))
if __name__ == "__main__":
run()
|