我有一个自定义的 http 客户端,它有一个默认的超时值。代码是这样的:
type Client struct {
*http.Client
timeout time.Duration
}
func (c *Client) Send(ctx context.Context, r *http.Request) (int, []byte, error) {
// If ctx has timeout set, then don't change it.
// Otherwise, create new context with ctx.WithTimeout(c.timeout)
}
Run Code Online (Sandbox Code Playgroud)
如何检查是否ctx设置了超时?
检查 bool 返回值context.Deadline:
截止日期返回应取消代表此上下文完成的工作的时间。当未设置截止日期时,截止日期返回 ok==false。对 Deadline 的连续调用返回相同的结果。
Run Code Online (Sandbox Code Playgroud)Deadline() (deadline time.Time, ok bool)
func (c *Client) Send(ctx context.Context, r *http.Request) (int, []byte, error) {
if _, deadlineSet := ctx.Deadline(); !deadlineSet {
ctx, _ = context.WithTimeout(ctx, c.timeout)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1032 次 |
| 最近记录: |