gpt4 book ai didi

go - 我可以检查上下文是否已经设置了超时吗?

转载 作者:IT王子 更新时间:2023-10-29 01:57:53 25 4
gpt4 key购买 nike

我有一个自定义的 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)
}

如何检查 ctx 是否设置了超时?

最佳答案

检查 context.Deadline 的 bool 返回值:

Deadline returns the time when work done on behalf of this context should be canceled. Deadline returns ok==false when no deadline is set. Successive calls to Deadline return the same results.

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)
}
}

关于go - 我可以检查上下文是否已经设置了超时吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44822381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com