Go 的 context:超时、取消与链路传递
context.Context 的几个关键点:
- 超时:
context.WithTimeout - 取消:
context.WithCancel - 传递:请求链路一路向下传
ctx, cancel := context.WithTimeout(r.Context(), 2*time.Second)
defer cancel()
建议:不要把 context 存结构体里;也不要用它传“可选参数”,它应该只承载请求生命周期与链路数据。
context.Context 的几个关键点:
context.WithTimeoutcontext.WithCancelctx, cancel := context.WithTimeout(r.Context(), 2*time.Second)
defer cancel()
建议:不要把 context 存结构体里;也不要用它传“可选参数”,它应该只承载请求生命周期与链路数据。