英文:
App Engine dev server - Protocol wrong type for socket
问题
我正在本地使用开发服务器运行一个用Go编写的App Engine应用程序,并使用每秒1个请求的速度向API发送大约100k-1MB的JSON数据。
服务器不时会打印错误跟踪,但仍然继续处理请求:
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,但问题仍然存在。
我在网上没有找到任何有助于理解此问题的信息。
有人知道这可能是由什么引起的吗?
英文:
I'm running an App Engine app written in Go locally with the development server and hitting the API with requests 1/s with roughly 100k-1MB JSON data.
From time to time the server prints an error trace but still continues to serve requests:
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
The client is in a loop doing:
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 is now 1.9.26 and I had 1.9.25 before with the same issue.
I have unsuccessfully found anything online that would help me understand the issue.
Does anyone have an idea what this might be caused by?
答案1
得分: 1
这似乎是从wsgiserver2.py
中使用Python套接字引起的错误,因为网络上有很多关于"error 41"和"Protocol wrong type for socket"的参考,都与Python的sockets
模块有关。
考虑到这个问题的间歇性,我认为这很可能是平台上的问题。在这种情况下,你应该在公共问题跟踪器中提交一个问题报告,其中包含足够的代码来重现该问题,或者附带一个可以重现该问题的应用程序。
祝你在提交问题报告时好运!
英文:
This appears to be an error bubbling-up from wsgiserver2.py
's use of python sockets, since many other references to "error 41" and "Protocol wrong type for socket" show up on the net as python sockets
-module-related.
I think given the intermittent nature of this problem that it's likely an issue on the platform. In such a case, you should file an issue report in the public issue tracker containing enough code to reproduce the issue, or an attached app which can reproduced the issue.
Best of luck in filing that issue report!
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论