今天看到这篇文章:Don’t use Go’s default HTTP client。总结起来就是直接使用Go
语言的http.Post
,http.Get
等方法时,底层连接使用的是DefaultClient
。而DefaultClient
没有设置请求超时:
// DefaultClient is the default Client and is used by Get, Head, and Post.
var DefaultClient = &Client{}
因此,如果服务器端如果一直无响应的话,就会把当前发出请求的goroutine
挂死。因此如果要使用DefaultClient
,一定要留心这个陷阱。