【发布时间】:2020-10-06 20:33:06
【问题描述】:
我正在使用 gRPC csharp 实现让两个服务相互通信。
从客户打来电话时,我设置了截止日期。 在服务器上接到电话时,我正在阅读截止日期。 令我惊讶的是,截止日期值不一样,相差几分之一秒。
gRPC 文档说截止日期是fixed point in time。所以我希望在服务器上收到相同的值,但事实并非如此。
我可以看到它提到了100ns 的四舍五入,但就我而言,它更多。
可以考虑飞行时间吗?我找不到这样的逻辑,这会违反固定时间点的概念。
在 gRPC 内部 Timespec 和 gRPC source code 中的 c# DateTime 之间转换是否存在错误?
示例(伪)代码:
// client:
var serviceClient = new ServiceClient(new Channel("address", "port", ChannelCredentials.Insecure));
var deadline = DateTime.UtcNow;
Console.WriteLine(deadline.ToString("O"));
serviceClient.SendAsync(request, new CallOptions(null, deadline));
// server:
public override async Task Send(SendRequest request, ServerCallContext context)
{
Console.WriteLine(context.Deadline.ToString("O"));
}
控制台输出是:
2020-09-22T14:14:20.8359860Z 客户端
2020-09-22T14:14:21.2910442Z 用于服务器
【问题讨论】:
标签: .net grpc grpc-dotnet