Сервер App Engine - неверный тип протокола для сокета
Я запускаю приложение App Engine, написанное на Go локально с сервером разработки, и использую API с запросами 1/ с с данными JSON размером примерно 100 КБ - 1 МБ.
Время от времени сервер печатает трассировку ошибок, но продолжает обслуживать запросы:
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 ответ
Похоже, это ошибка всплывающее из wsgiserver2.py
использование python-сокетов, так как многие другие ссылки на "error 41" и "Protocol неправильный тип для сокета" отображаются в сети как python sockets
-модуль связанных.
Я думаю, учитывая прерывистый характер этой проблемы, что это, скорее всего, проблема на платформе. В таком случае вам следует подать отчет о проблеме в общедоступном трекере, содержащем достаточно кода для воспроизведения проблемы, или в приложении, которое может воспроизвести проблему.
Желаем удачи в подаче отчета о проблеме!