gpt4 book ai didi

multithreading - 具有高并发执行的 Golang http.Client 中的 panic

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

我正在创建一个系统,它是一个 golang 中的 http 服务器,它将根据收到的每个请求向另一个 API 执行多个请求。

例如

curl localhost:8080/users?ids=1,2,3,4

将执行多个并发获取:

api.com/user/1

api.com/user/2

api.com/user/3

api.com/user/4

我遇到了一个问题,当 http.Client 有大量并发请求时(如果我点击 localhost:8080/users?ids=1,2,3,4 ..... 40 AB 4 并发,或在我的浏览器中点击刷新)

问题似乎与句子有关(第 159 行)

resp, _ := client.Do(req)

我的代码在这里(不是很大……180 行): http://play.golang.org/p/olibNz2n1Z

panic 错误是这个:

goroutine 5 [select]:
net/http.(*persistConn).roundTrip(0xc210058f80, 0xc21000a720, 0xc210058f80, 0x0, 0x0)
/usr/local/go/src/pkg/net/http/transport.go:879 +0x6d6
net/http.(*Transport).RoundTrip(0xc210058280, 0xc21005b1a0, 0x1, 0x0, 0x0)
/usr/local/go/src/pkg/net/http/transport.go:187 +0x391
net/http.send(0xc21005b1a0, 0x590290, 0xc210058280, 0x0, 0x0, ...)
/usr/local/go/src/pkg/net/http/client.go:168 +0x37f
net/http.(*Client).send(0xc21001e960, 0xc21005b1a0, 0x28, 0xc21001ec30, 0xc21005f570)
/usr/local/go/src/pkg/net/http/client.go:100 +0xd9
net/http.(*Client).doFollowingRedirects(0xc21001e960, 0xc21005b1a0, 0x2ab298, 0x0, 0x0, ...)
/usr/local/go/src/pkg/net/http/client.go:294 +0x671
net/http.(*Client).Do(0xc21001e960, 0xc21005b1a0, 0xa, 0x0, 0x0)
/usr/local/go/src/pkg/net/http/client.go:129 +0x8f
main.buscarRecurso(0xc21000a650, 0xb, 0xc2100526c0)
/Users/fscasserra/Documents/workspace/Luna/multiget-api/multiget.go:159 +0x131
created by main.obtenerRecursos
/Users/fscasserra/Documents/workspace/Luna/multiget-api/multiget.go:106 +0x197

谁能帮帮我?

最好的问候,铁

最佳答案

我将投资于在 nil resp.Body 上调用 Close() 引起的 panic 。

经常检查你的错误!

一般来说,如果一个函数返回一个值和一个错误,响应值在非零错误的情况下可能无法使用。应详细记录任何异常(exception)情况。

关于multithreading - 具有高并发执行的 Golang http.Client 中的 panic ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25152030/

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