WithTimeout 的使用
下面的例子通过 WithTimeout
创建了一个带有超时的 context
。在后面一个阻塞函数任务执行超时后,取消任务继续执行。
1 | package main |
处理超时异常
通过 ctx.Err()
可以捕获到一个 Context Deadline Exceeded
异常。当 ctx.Done()
,被执行后,就可以捕获到并通过 errors.Is()
来判断这个异常是否为 context.DeadlineExceeded
:
1 | if errors.Is(err, context.DeadlineExceeded) { |
HTTP
Context Deadline Exceeded
常用在 HTTP
请求的上下文。设置截止日期或超时设置(即请求应中止的时间),并捕获在 Go
中发生的错误。如果服务器响应的时间大于设置的超时时间,则返回此错误。为请求设置超时是生产环境中的一个好习惯,可确保您始终在有限时间内获得响应(或错误)。
1 | package main |
1 | 2021/08/19 06:39:09 ContextDeadlineExceeded: true |