Http Golang:ExecuteTemplate导致错误:`write tcp 127.0.0.1:8080->;127.0.0.1:35212:写入:具有多个请求的断管`
我有这样的想法:Http Golang:ExecuteTemplate导致错误:`write tcp 127.0.0.1:8080->;127.0.0.1:35212:写入:具有多个请求的断管`,http,go,template-engine,Http,Go,Template Engine,我有这样的想法: t, err1 := template.ParseFiles("exampleFile.tmpl") if err1 != nil { panic(err1) } err2 := t.ExecuteTemplate(w, "example", someStruct) if err2 != nil { panic(err2) } 对于简单的请求,没有问题 但是,如果我发送两个彼此非常接近的请求,大约40%的时间是从Chrome和一些ajax请求中进行的简单页面刷
t, err1 := template.ParseFiles("exampleFile.tmpl")
if err1 != nil {
panic(err1)
}
err2 := t.ExecuteTemplate(w, "example", someStruct)
if err2 != nil {
panic(err2)
}
对于简单的请求,没有问题
但是,如果我发送两个彼此非常接近的请求,大约40%的时间是从Chrome和一些ajax请求中进行的简单页面刷新,它会导致各种不同的错误(err2):
写入tcp 127.0.0.1:8080->127.0.0.1:35212:写入:断管
写入:对等方重置连接
使用封闭式网络连接
http:127.0.0.1:35814:运行时错误:切片界限超出范围 goroutine 340(…)
戈朗最好的处理方法是什么 您可以发布http处理程序吗?如果您可以发布至少所有指向此路径的代码,则会有所帮助。连接未关闭时发生更改。你能开一个我们可以看看的游乐场吗。最后一篇文章绝对没有暗示这是意料之中的(这与你的问题完全无关)。首先使用种族检测器运行代码。您永远不会看到恐慌,尤其是
切片超出范围的错误。(请不要惊慌失措地处理简单的错误)这不是正常的行为吗?如果在服务器将数据发送回客户端时,连接关闭,则停止渲染过程是正常的,不是吗?(我同意上面的评论,不要对这些简单的错误使用恐慌)@Depado:是的,如果客户端在请求过程中断开连接,那么写错误是可以预料的,但是这是一个通过localhost的短期请求,并且没有迹象表明客户端应该断开连接。另外,从来没有预料到会出现恐慌,这表明存在编程错误。