【发布时间】:2020-10-04 10:37:09
【问题描述】:
我是Go 的新手,并且每天都在学习它。我在我们的项目中看到很多context cancelled 错误,这让我很恼火。所以我想深入挖掘一下,弄清楚发生了什么。
如果我没记错的话,用“简单”的术语来说,上下文取消意味着给定的请求(通过使用 gokit 的 grpc)已经超时。正确的?如果是这样,解决此问题的最佳方法应该是什么?
我是否应该调查这些请求超时的原因(可能底层数据库查询需要很长时间或其他什么)并解决这些问题?
Go内部是否暗示了与Go相关的某些内容?开始处理此错误的最佳方法是什么?现在,我看到的都是“上下文已取消”,不知道为什么会这样。
【问题讨论】:
-
"上下文取消意味着给定的请求已经超时,对吗?"没有。超时产生context.DeadlineExceeded。 Canceled 表示其中一个 CancelFuncs 已被调用,仅此而已。