在Grpc

时间:2018-03-14 11:14:37

标签: c++ timeout grpc

我正在使用Grpc的同步C ++ API通过需要无限期保持打开的双向流发送消息。

现在,如果我在服务器和服务器之间拉电缆客户端,该流上的WriteRead调用将在返回false之前阻止双方约15分钟。

如何将ReadWrite的超时设置为少于15分钟的时间?

我正在启动服务器:

ServerBuilder srvBuilder;

srvBuilder.AddChannelArgument(GRPC_ARG_KEEPALIVE_TIME_MS, 2000);
srvBuilder.AddChannelArgument(GRPC_ARG_KEEPALIVE_TIMEOUT_MS, 1000);
srvBuilder.AddChannelArgument(GRPC_ARG_HTTP2_BDP_PROBE, 1);
srvBuilder.AddChannelArgument(GRPC_ARG_MAX_CONNECTION_IDLE_MS , 1000);

srvBuilder.AddListeningPort("0.0.0.0:50505", grpc::InsecureServerCredentials());
srvBuilder.RegisterService(&testService);

在Ubuntu 16.04 LTS上使用Grpc 1.10.0

1 个答案:

答案 0 :(得分:-1)

您可以通过在调用之前调用ClientContext上的set_deadline来设置RPC的截止日期。

更新 - 我为误解而道歉。 GRPC_ARG_KEEPALIVE_TIME_MS正是您想要的。它没有按预期工作的原因可能与您进行读写的方式有关。

相关问题