gpt4 book ai didi

Goroutine 报错

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

我尝试对一个网站进行多次投票,但我得到:

panic: runtime error: invalid memory address or nil pointer dereference

[signal 0xb code=0x1 addr=0x38 pc=0x400cca]

package main

import (
"fmt"
"net/http"
)

var urls = []string{
"http://site-centos-64:8080/examples/abc1.jsp",
}

type HttpResponse struct {
url string
response *http.Response
err error
}
var ch = make(chan *HttpResponse, 1000) // buffered

func abc(i int){
for _, url := range urls {
resp, err := http.Get(url)
resp.Body.Close()
ch <- &HttpResponse{url, resp, err}
}
}
func asyncHttpGets(urls []string) []*HttpResponse {
responses := []*HttpResponse{}
for i:=0;i<1000;i++{
go abc(i)
}
for {
select {
case r := <-ch:
responses = append(responses, r)
if len(responses) == 1000 {
return responses
}

}
}

return responses

}

func main() {
results := asyncHttpGets(urls)
for _, result := range results {
fmt.Printf("%s status: %s\n", result.url,
result.response.Status)
}
}

当我执行 500 次时,效果绝对不错。

最佳答案

go stacktrace 包含哪一行代码导致了 panic 。可能有很多 goroutines 正在运行,但你可以 grep 获取你的文件名。我假设您的服务器存在一些连接问题。

正确处理 abc 函数中的 err 应该会告诉您更多信息。
如果出现错误,请不要调用 resp.Body.Close()。在您的 main 函数中,result.response.Status 也不起作用。

关于Goroutine 报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21451719/

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