使用 gRPC,我应该如何处理服务器和客户端之间的部分结果?

问题描述

这更像是一个 API 设计问题,但我很好奇其他人对这种情况的看法:

假设我有一个服务器,客户端会向我发送他们想要检索数据的项目列表,然后我返回一个 item:data 的映射。

当然首先我会检查我的缓存,查询我的数据库。让我们假设数据库查询花费的时间太长(无论出于何种原因),所以我有足够的时间将部分结果(在缓存中找到)返回给客户端。

我想让客户知道两件重要的事情:

  1. 这是您的部分结果(如果您选择使用它们)。
  2. 这就是我无法解决您的其余查询 (err.ConnDeadlineExceeded) 的原因

现在我计划只返回部分结果和零错误。这样做的原因是我的大多数客户首先检查 err != nil,并且只有当这是真的时,他们才会真正费心查看结果。

但这感觉不对,因为我正在丢弃有关数据库超时的信息。任何建议的解决方案?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)