我正在使用开发服务器在本地运行一个使用Go编写的App Engine应用程序,并使用大约100k-1MB JSON数据的请求1 / s命中API。
服务器有时会打印错误跟踪但仍会继续提供请求:
socket.error 41
Traceback (most recent call last):
File "/Users/foo/go_appengine/lib/cherrypy/cherrypy/wsgiserver/wsgiserver2.py", line 1302, in communicate
req.respond()
File "/Users/foo/go_appengine/lib/cherrypy/cherrypy/wsgiserver/wsgiserver2.py", line 831, in respond
self.server.gateway(self).respond()
File "/Users/foo/go_appengine/lib/cherrypy/cherrypy/wsgiserver/wsgiserver2.py", line 2127, in respond
self.write(chunk)
File "/Users/foo/go_appengine/lib/cherrypy/cherrypy/wsgiserver/wsgiserver2.py", line 2188, in write
self.req.write(chunk)
File "/Users/foo/go_appengine/lib/cherrypy/cherrypy/wsgiserver/wsgiserver2.py", line 879, in write
self.conn.wfile.sendall(chunk)
File "/Users/foo/go_appengine/lib/cherrypy/cherrypy/wsgiserver/wsgiserver2.py", line 970, in sendall
bytes_sent = self.send(data)
File "/Users/foo/go_appengine/lib/cherrypy/cherrypy/wsgiserver/wsgiserver2.py", line 977, in send
bytes_sent = self._sock.send(data)
error: [Errno 41] Protocol wrong type for socket
客户端处于循环中:
func call(url string, data []byte) error {
r, err := http.Post(url, "application/json", bytes.NewReader(data))
if err != nil {
return err
}
defer r.Body.Close()
if r.StatusCode != http.StatusCreated {
return fmt.Errorf("unexpected status code %d", r.StatusCode)
}
return nil
}
Golang App Engine SDK现在是1.9.26,之前我遇到过同样问题的1.9.25。
我在网上找不到任何可以帮助我理解这个问题的内容。
有谁知道这可能是由什么引起的?
答案 0 :(得分:2)
这似乎是wsgiserver2.py
使用python套接字时出错的错误,因为许多其他对“错误41”和“协议错误的套接字类型”的引用在网络上显示为python { {1}} - 与模块有关。
我认为考虑到这个问题的间歇性,它可能是平台上的一个问题。在这种情况下,您应该file an issue report in the public issue tracker包含足以重现问题的代码,或者可以重现该问题的附加应用。
在提交该问题报告时祝你好运!