Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http Golang:ExecuteTemplate导致错误:`write tcp 127.0.0.1:8080->;127.0.0.1:35212:写入:具有多个请求的断管`_Http_Go_Template Engine - Fatal编程技术网

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的短期请求,并且没有迹象表明客户端应该断开连接。另外,从来没有预料到会出现恐慌,这表明存在编程错误。