我正在使用来自MS Windows 10上的C#平台的gRPC写回TensorFlow服务系统的连接。我已经看到许多对gRPC的C ++ API的超时和死线的引用,但是可以'似乎要弄清楚如何在C#下超时。
我只是打开一个到服务器的通道,设置客户端和调用服务器。我希望分类在5秒左右后超时。任何帮助或指示将不胜感激。
channel = new Channel(modelServer,ChannelCredentials.Insecure);
var client = MyService.NewClient(channel);
MyResponse classvalue = client.Classify(featureSet);
答案 0 :(得分:6)
要设置通话的截止日期,您只需使用以下“截止日期:”
即可client.Classify(featureSet, deadline: DateTime.UtcNow.AddSeconds(5));
或
client.Classify(featureSet, new CallOptions(deadline: DateTime.UtcNow.AddSeconds(5)));
代码完成后,两种方式都很容易被发现。
答案 1 :(得分:2)
GRPC超时来检测服务器停机情况。我是这样做的:
private async void SampleCode()
{
var client = await GetClient();
var data = await client.GetAllTemplatesAsync(request, new
CallOptions().WithDeadline(DateTime.UtcNow.AddSeconds(7)));
}
private async Task<MyGrpcClient> GetClient()
{
var channel = new Channel("somehost",23456, ChannelCredentials.Insecure);
await channel.ConnectAsync(deadline: DateTime.UtcNow.AddSeconds(2));
return new MyGrpcClient(channel);
}
因此,如果服务器关闭,则对GetClient()的调用将超时。如果服务器已启动但响应时间过长,则客户端服务调用上的超时将生效。