Сервер 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 -модуль связанных.

Я думаю, учитывая прерывистый характер этой проблемы, что это, скорее всего, проблема на платформе. В таком случае вам следует подать отчет о проблеме в общедоступном трекере, содержащем достаточно кода для воспроизведения проблемы, или в приложении, которое может воспроизвести проблему.

Желаем удачи в подаче отчета о проблеме!

Другие вопросы по тегам