gpt4 book ai didi

go - HTTP 客户端,空闲超时

转载 作者:数据小太阳 更新时间:2023-10-29 03:17:09 24 4
gpt4 key购买 nike

如何在 Go HTTP 客户端中设置空闲超时?

空闲超时是指从 HTTP 客户端内部调用 Conn 接口(interface)的读/写方法时超时。当客户端下载文件并且在某些时刻由于达到读取超时而导致下载失败时,它会很有用。

最佳答案

您需要创建自己的 net.Dialer,它返回一个 net.Conn,它设置了适当的读写截止时间。

Conn 看起来像这样:

// Conn wraps a net.Conn, and sets a deadline for every read
// and write operation.
type Conn struct {
net.Conn
ReadTimeout time.Duration
WriteTimeout time.Duration
}

func (c *Conn) Read(b []byte) (int, error) {
err := c.Conn.SetReadDeadline(time.Now().Add(c.ReadTimeout))
if err != nil {
return 0, err
}
return c.Conn.Read(b)
}

func (c *Conn) Write(b []byte) (int, error) {
err := c.Conn.SetWriteDeadline(time.Now().Add(c.WriteTimeout))
if err != nil {
return 0, err
}
return c.Conn.Write(b)
}

关于go - HTTP 客户端,空闲超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27784521/

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