首页 > 解决方案 > gRPC 客户端选项会覆盖服务器选项吗?

问题描述

我在 python API 中实现了一个 gRPC 服务器,并在其上设置了几个选项,如下所示:

options=[
      ('grpc.max_send_message_length', 500 * 1024 * 1024),
      ('grpc.max_receive_message_length', 500 * 1024 * 1024),
      ('GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA', 0),
      ('grpc.keepalive_time_ms', 300000),
]
server = grpc.server(futures.ThreadPoolExecutor(max_workers=4), options=options)

我们将默认消息长度从默认的 4 MB 增加到 500 MB。我的一位用户看到以下错误:

io.grpc.StatusRuntimeException: RESOURCE_EXHAUSTED: gRPC message exceeds maximum size 4194304: 5224306

我想弄清楚的是客户端设置是否可能覆盖我的服务器设置?

否则,我在消息长度上设置服务器选项的方式有问题吗?

标签: pythongrpc

解决方案


客户端和服务器上的grpc.max_{send,receive}_message_length选项在每一端本地强制执行,彼此独立。因此,例如,grpc.max_receive_message_length无论服务器设置如何,客户端都需要像您在此处设置一个数字来接受服务器发送的大消息。


推荐阅读