Context
已收录文章:28篇
-
Golang · Go教程 | 2个月前 | 错误处理 · Context · 并发控制 · Go教程 · 并发控制 Go教程 context取消 context.WithCancelCause context.Causecontext.WithCancelCause 适合在请求链路中保留明确取消原因,让子任务不只知道 context canceled,还能知道是权限拒绝、上游失败还是主动终止。落地时要区分系统取消和业务错误。342 收藏
-
调用 context.WithCancel 后,goroutine 仍然不退出,通常不是 cancel 失效,而是工作循环没有监听 Done 或被阻塞在不可取消的操作上。本文用最小代码复现问题,再通过 pprof、日志和退出计数定位原因,给出可回归的修复方式。334 收藏
-
Golang · Go问答 | 2个月前 | 超时 · 错误处理 · go · Context · errors.Is Go context deadline exceeded WithCancelCauseGo 服务里看到 context deadline exceeded,不代表所有请求都只是超时。本文从上游主动取消、下游调用超时和本地截止时间三种现场出发,演示 WithCancelCause、Cause 与 errors.Is 的判断顺序,让日志能指出真正的中断来源。309 收藏
-
Golang · Go问答 | 2个月前 | goroutine · Context · Go问答 · goroutine泄漏 context.WithTimeout Go问答 CancelFunc Go context取消 Go服务超时Go 服务已经返回超时,但后台 goroutine 仍在消耗连接和内存,往往不是超时参数太小,而是取消信号没有沿调用链传递或 CancelFunc 没有及时调用。本文给出从症状判断、代码修复到告警复盘的排查清单。304 收藏
-
Go context 可以放用户 ID、traceID 这类请求作用域值,但不适合替代函数参数。本文用中间件、Service 和 Repository 的边界示例说明怎么判断。269 收藏
-
Golang · Go问答 | 1个月前 | 并发 · golang · 错误处理 · Context · Go问答 · Go 错误处理 Go问答 context.WithCancelCause context.Cause context.ErrGo 并发任务被取消时,ctx.Err() 只能告诉你是取消还是超时,context.Cause(ctx) 才能保留业务失败原因。本文用一个可运行的任务链说明 Cause、Err、errors.Is 和错误包装各自负责什么。263 收藏
-
Go 的 context.AfterFunc 适合在上下文取消后触发清理动作,但 Stop 返回 false 时回调可能已经开始或即将开始。本文用超时清理场景说明回调生命周期、竞态窗口、幂等保护和测试验收边界。258 收藏
-
Golang · Go教程 | 1个月前 | 并发 · HTTP · go · Context · net/http · HTTP中间件 Go教程 context取消 http.Request.Clone WithContext 请求复制Go 的 http.Request.Clone 和 WithContext 都能得到一份新请求,但复制深度、Header 与 URL 的独立性不同。本文用重试转发和取消场景拆开两者边界,并用测试确认改写不会污染原请求。238 收藏
-
科技周边 · 人工智能 | 1个月前 | go · Context · 流式处理 · 人工智能 · sse · 重试 · OpenAI Go context 流式输出 SSE Responses API 断线重试Go 服务接入 OpenAI Responses API 的流式输出时,真正难的是事件边界、重复片段、断线重试和请求取消。本文用官方 openai-go SDK 拆解 SSE 事件,给出增量文本拼接、单次重试边界和 context 超时处理的最小流程。236 收藏
-
context.AfterFunc 适合把取消信号转换成资源清理回调,但 Stop 返回 false 时回调可能已经启动,不能把它当成完成通知。本文从旧式 done 监听迁移到 AfterFunc,拆解取消、停止、同步和测试边界。224 收藏
-
Golang · Go教程 | 2个月前 | Context · 超时控制 · Go教程 · Go context 请求超时 Transport http.Client Client.Timeout ResponseHeaderTimeoutGo HTTP 客户端超时不要只靠一个 context 或一个 Client.Timeout。更稳的做法是把总预算、连接、TLS 握手、响应头和读取阶段分开设置,再用错误判断和日志字段确认到底卡在哪一段。218 收藏
-
Golang · Go问答 | 1个月前 | 并发 · golang · HTTP · Context · Go问答 · 资源释放 context.Context 请求取消 Go问答 ctx.Done Go HTTPGo 服务发布或重启时,http.Server.Shutdown 可以停止接收新连接并等待在途请求。本文说明优雅退出的调用顺序、超时边界、后台任务隔离和验收方式。176 收藏