我有这样的事情:
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请求,则会导致各种不同的错误(错误2):
write tcp 127.0.0.1:8080->127.0.0.1:35212: write: broken pipe
write: connection reset by peer
use of closed network connection
http: panic serving 127.0.0.1:35814: runtime error: slice bounds out of range
goroutine 340 (...)
其他人似乎有类似的问题,但没有明确的解决方案。
另一篇文章似乎建议只是期待这一点,并重试失败的请求:
Golang最好的办法是什么?