我正在使用来自MS Windows 10上的C#平台的gRPC写回TensorFlow服务系统的连接.我已经看到许多对gRPC的C++ API的超时和死线的引用,但似乎无法弄清楚如何在C#下进行超时.
我只是打开一个到服务器的通道,设置客户端和调用服务器.我希望这个Classify在5秒左右后超时.任何帮助或方向将不胜感激.
channel = new Channel(modelServer,ChannelCredentials.Insecure);
var client = MyService.NewClient(channel);
MyResponse classvalue = client.Classify(featureSet);
小智 8
需要在调用连接通道时使用 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);
}
Run Code Online (Sandbox Code Playgroud)
因此,如果服务器关闭,则对 GetClient() 的调用将超时。如果服务器已启动但响应时间过长,则客户端服务调用的超时将生效。
要设置通话的截止日期,您只需使用以下"截止日期:"
client.Classify(featureSet, deadline: DateTime.UtcNow.AddSeconds(5));
Run Code Online (Sandbox Code Playgroud)
要么
client.Classify(featureSet, new CallOptions(deadline: DateTime.UtcNow.AddSeconds(5)));
Run Code Online (Sandbox Code Playgroud)
代码完成后,两种方式都应该很容易被发现.