如果服务器关闭,如何在 C# 中使 gRPC 客户端超时?
How do you make gRPC client Timeout in C# if the server is down?
我正在从 MS 上的 C# 平台使用 gRPC 将连接写回 TensorFlow 服务系统 Windows10。我看到很多关于 C++ 超时和截止日期的参考 API 对于 gRPC,但似乎无法弄清楚如何在 C# 下超时。
我只是打开一个到服务器的通道,设置一个客户端并调用服务器。我希望这个 Classify 在 5 秒左右后超时。任何帮助或指导将不胜感激。
channel = new Channel(modelServer, ChannelCredentials.Insecure);
var client = MyService.NewClient(channel);
MyResponse classvalue = client.Classify(featureSet);
要设置通话的截止日期,您可以简单地使用以下 "deadline:"
client.Classify(featureSet, deadline: DateTime.UtcNow.AddSeconds(5));
或
client.Classify(featureSet, new CallOptions(deadline: DateTime.UtcNow.AddSeconds(5)));
这两种方式都应该很容易被代码完成发现。
需要在呼叫连接通道时使用 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() 的调用将超时。如果服务器已启动但响应时间过长,则客户端服务调用超时将生效。
我正在从 MS 上的 C# 平台使用 gRPC 将连接写回 TensorFlow 服务系统 Windows10。我看到很多关于 C++ 超时和截止日期的参考 API 对于 gRPC,但似乎无法弄清楚如何在 C# 下超时。
我只是打开一个到服务器的通道,设置一个客户端并调用服务器。我希望这个 Classify 在 5 秒左右后超时。任何帮助或指导将不胜感激。
channel = new Channel(modelServer, ChannelCredentials.Insecure);
var client = MyService.NewClient(channel);
MyResponse classvalue = client.Classify(featureSet);
要设置通话的截止日期,您可以简单地使用以下 "deadline:"
client.Classify(featureSet, deadline: DateTime.UtcNow.AddSeconds(5));
或
client.Classify(featureSet, new CallOptions(deadline: DateTime.UtcNow.AddSeconds(5)));
这两种方式都应该很容易被代码完成发现。
需要在呼叫连接通道时使用 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() 的调用将超时。如果服务器已启动但响应时间过长,则客户端服务调用超时将生效。