http2:服务器发送GOAWAY并关闭连接; LastStreamID = 1999

时间:2017-07-20 08:17:26

标签: http go

我有循环,我调用那个从osrm服务器获取响应的函数,经过一段时间ioutil.ReadAll(resp.Body)返回打印http2: server sent GOAWAY and closed the connection; LastStreamID=1999, ErrCode=NO_ERROR, debug=""的错误

func RequestGET(req string) []byte {

    reqst, err := http.NewRequest("GET", req, nil)
    client := &http.Client{}
    resp, err := client.Do(reqst)
    if err != nil {
        panic(err)
    }
    resp_data, err := ioutil.ReadAll(resp.Body)
    resp.Body.Close()
    if err != nil {
        fmt.Println(err)
    }
    return resp_data
}

不是resp.Body.Close()会关闭连接吗?我希望每次都能得到一个新的。

1 个答案:

答案 0 :(得分:3)

服务器因某种原因正在关闭连接;后端关闭,超时等等。除了重试之外,没有什么可以做的,就像你有任何其他连接错误一样。关于自动重试这个问题,有一些关于相关问题(https://golang.org/issue/18639)的讨论,但它通常看起来像客户端正在按预期工作。

Response.Body.Close不会关闭连接,否则会使用持久连接来破坏http1.1和http2的目的。读取和关闭响应主体是如何允许http客户端重用连接。