gRPC是一个开源的通用的高性能的通用远程过程调用(RPC)框架,由Google开发。gRPC支持多种语言,并且可以运行在多种环境中,在这里主要讨论python的使用与说明。
C++的相关配置可以跳转到在Ubuntu20.04环境下安装GRPC_ubuntu grpc-CSDN博客
gRPC使用Protocol Buffers(protobuf)作为接口描述语言(IDL),定义了服务。protobuf是Google开发的一种数据序列化协议(类似于XML、JSON、pickle等)。它可以用于数据存储、通信协议等方面。
相关配置与依赖
1.安装
pip install grpcio #conda下注意替换
2.gRPC tools
pip install grpcio-tools
gRPC tools包含了protobuf的编译器protoc以及编译插件grpc_python_out,这些工具可以帮助我们编译和生成gRPC服务的客户端和服务端代码
在gRPC中,protoc是protobuf的编译器,可以将protobuf文件编译成对应语言的源代码文件。而grpc_python_out是gRPC为Python提供的编译插件,可以将protobuf文件编译成Python源代码文件,使得Python程序可以方便地调用gRPC服务。
3.测试运行demo
首先需要了解什么是proto文件,以及其编译的方法:
proto文件是一种用于定义数据结构和服务接口的文件格式,可以被编译成多种编程语言的源代码,用于生成对应的数据访问类和序列化/反序列化代码。这样,我们就可以在不同的编程语言中使用相同的数据结构和接口定义,实现跨语言的数据交换和通信。
我们在这里看一个官方的demo:
syntax = "proto3";
package helloworld;
service Greeter {
// 基础Demo
rpc SayHello (HelloRequest) returns (HelloResponse) {}
}
// 简单请求
message HelloRequest {
string name = 1;
}
// 简单响应
message HelloResponse {
string message = 1;
}
在给出的代码中,主要定义了一个greeter服务,其中有一个SayHello
方法,该方法接收一个HelloRequest
消息并返回一个HelloResponse
消息。
接下来我们对它进行编译:
cd python_grpc #更换成你自己的所在目录
python -m grpc_tools.protoc -I./ --python_out=./ --grpc_python_out=./ proto/helloworld.proto
可以看到编译的到的两个文件
接着一个终端输入:
python 服务端(改成自己文件名).py
另一个输入:
python 客户端.py
实现传输。