Grpc的安装和原理,见官网:https://grpc.io/
由于我的目的是不断地从客户端传输图片到服务器端,然后服务器在每次收到图片后返回结果,所以我用的是:
客户端流式RPC,客户端再次使用提供的流写入一系列消息并将其发送到服务器。一旦客户端写完消息,它就等待服务器读取它们并返回它的响应。
下面是我的proto文件,命名为:upload.proto:
syntax = 'proto3';
service Upload {
rpc Fileup(stream Tdata) returns (Tdata) {}
}
message Tdata {
string data = 1;
int64 size = 2;
string name = 3;
}
从.proto服务定义生成gRPC客户端和服务器接口:
$ python -m grpc_tools.protoc -I../../protos --python_out=. --grpc_python_out=. ../../protos/upload.proto
然后就会得到:upload_pb2.py 和 upload_pb2_grpc.py (自动生成的)
接下去实现客户端和服务器端的代码:
客户端:
import threading
import grpc
import time
import codecs
from pprint import pprint