在 golang 中更新 grpc 的接收和发送消息大小
Posted
技术标签:
【中文标题】在 golang 中更新 grpc 的接收和发送消息大小【英文标题】:Updating receive and send message size for grpc in golang 【发布时间】:2019-01-10 22:32:11 【问题描述】:我有用 Go 编写的 grpc 服务器,我正在尝试使用以下代码将接收和发送消息大小更新为 20MB,而不是默认的 4MB
var s *grpc.Server
s = grpc.NewServer(grpc.MaxRecvMsgSize(1024*1024*20), grpc.MaxSendMsgSize(1024*1024*20))
pb.RegisterProductServer(s,mysrv)
但上面的方法似乎不起作用,因为当我尝试从客户端received message larger than max (5807570 vs. 4194304)"
调用时仍然收到错误消息
不确定是什么覆盖了大小
【问题讨论】:
【参考方案1】:我还没有机会对此进行测试,但是您是否尝试过从客户端存根添加相同的选项?可以附加相同的选项作为拨号选项:
maxMsgSize := 1024*1024*20
conn, err := grpc.Dial(address, grpc.WithDefaultCallOptions(grpc.MaxRecvMsgSize(maxMsgSize), grpc.MaxSendMsgSize(maxMsgSize)))
if err != nil
// ...
defer conn.close()
client := pb.NewProductClient(conn)
// ...
我对您的用例一无所知,但如果您的响应数据可以分段传送,那么streaming APIs 可能会有用。
【讨论】:
谢谢!我们不能在服务器级别而不是客户端来控制它吗 从文档看来你不能(如果你上面的方法不能解决问题,我认为其他任何方法都不会)。也许在 GitHub 存储库中提交功能请求? github.com/grpc/grpc-go/issues 嘿@kingkupps,不使用grpc.WithDefaultCallOptions
,还有其他方法吗?因为,此数据类型仅在同一更高版本的 grpc 中定义。而且,我对更新我的 grpc 版本有一些限制。以上是关于在 golang 中更新 grpc 的接收和发送消息大小的主要内容,如果未能解决你的问题,请参考以下文章