Python通过grpc服务端传输pkl和图片文件
假设proto文件如下
syntax = "proto3";
// 流程执行-GPRC服务
package process;
service Process {
rpc runTask(Job) returns (stream Result);
}
message Job {
string modelId = 1;
string nodeId = 2;
string jobId = 3;
}
message Result {
int32 code = 1;
string message = 2;
string data = 3;
}
这里一定要用base64编码,服务端使用之后,客户端也要使用base64解码
def runTask(self, request, context):
model_id = request.modelId
node_id = request.nodeId
task_id = request.jobId
try:
# 传输模型
logger.info("开始传输模型文件")
with open("model.pkl", 'rb') as files:
content = files.read()
yield process_pb2.Result(code=1,
message="success",
data=json.dumps(base64.b64encode(content).decode('utf-8'))
logger.info("返回模型文件成功")
with open("image.png", 'rb') as files:
content = files.read()
yield process_pb2.Result(code=Code.RESULT,
message="success",
data=json.dumps(base64.b64encode(content).decode('utf-8')))
logger.info("返回图数据成功")
except Exception as e:
logger.exception(e)
yield process_pb2.Result(code=1,
message="FAULT",
data=str(e))