运行条件
服务器端为python版本的grpc,客户端为c++版本的grpc。windows 10系统。
错误
在使用grpc远程调用时,出现了Received message larger than max (XXXXXX vs. 4194304)这个错误。
原因
主要是grpc对传输数据长度进行了限制。原来的大小是4*1024*1024=4194304,也就是4M 。
解决方法
一、服务器端在创建server时,添加options参数,采用key-value的方式。如下所示:
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10),options=[
('grpc.max_send_message_length', MAX_MESSAGE_LENGTH),
('grpc.max_receive_message_length', MAX_MESSAGE_LENGTH)])
二、客户端在创建Channel时,改为调用CreateCustomChannel接口。如下所示:
grpc::ChannelArguments arg;//定义参数变量
//#define MAX_LEN 256*1024*1024
//设置最大接收和发送字节数
arg.SetMaxReceiveMessageSize(MAX_LEN);
arg.SetMaxSendMessageSize(MAX_LEN);
//auto channel = grpc::CreateChannel(IpAndPort, grpc::InsecureChannelCredentials());
//改用这个
auto channel = grpc::CreateCustomChannel(IpAndPort, grpc::InsecureChannelCredentials(), arg);
stu_ = data::NewStub(channel);
搞定,收工。如果对你有帮助,记得收藏点赞评论转发哦