python grpc报错Received message larger than max

运行条件

服务器端为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);

搞定,收工。如果对你有帮助,记得收藏点赞评论转发哦

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值