App Engine开发服务器 - 套接字的协议错误类型

时间:2015-09-26 18:46:48

标签: sockets google-app-engine go network-programming cherrypy

我正在使用开发服务器在本地运行一个使用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。

我在网上找不到任何可以帮助我理解这个问题的内容。

有谁知道这可能是由什么引起的?

1 个答案:

答案 0 :(得分:2)

这似乎是wsgiserver2.py使用python套接字时出错的错误,因为许多其他对“错误41”和“协议错误的套接字类型”的引用在网络上显示为python { {1}} - 与模块有关。

我认为考虑到这个问题的间歇性,它可能是平台上的一个问题。在这种情况下,您应该file an issue report in the public issue tracker包含足以重现问题的代码,或者可以重现该问题的附加应用。

在提交该问题报告时祝你好运!