Сломанная труба в Django Nonrel при загрузке localhost - PullRequest
5 голосов
/ 11 ноября 2011

При запуске Django Nonrel с Google App Engine 2.6.0 и Python 2.7 я получаю это исключение при первой загрузке localhost и localhost / admin (хотя я ожидаю, что это произойдет с любой страницей):

Exception happened during processing of request from ('127.0.0.1', 57011)
    Traceback (most recent call last):
      File "/usr/lib/python2.7/SocketServer.py", line 284, in _handle_request_noblock
        self.process_request(request, client_address)
      File "/usr/lib/python2.7/SocketServer.py", line 310, in process_request
        self.finish_request(request, client_address)
      File "/usr/lib/python2.7/SocketServer.py", line 323, in finish_request
        self.RequestHandlerClass(request, client_address, self)
      File "/usr/local/google_appengine/google/appengine/tools/dev_appserver.py", line 2438, in __init__
        BaseHTTPServer.BaseHTTPRequestHandler.__init__(self, *args, **kwargs)
      File "/usr/lib/python2.7/SocketServer.py", line 641, in __init__
        self.finish()
      File "/usr/lib/python2.7/SocketServer.py", line 694, in finish
        self.wfile.flush()
      File "/usr/lib/python2.7/socket.py", line 303, in flush
        self._sock.sendall(view[write_offset:write_offset+buffer_size])
    error: [Errno 32] Broken pipe

Как ни странно, он появляется только с помощью Google Chrome.При использовании Firefox он не печатает никаких исключений (или, по крайней мере, я не смог повторить эту проблему в Firefox после многих попыток).

Кто-нибудь знает что-нибудь об этой проблеме?.

Спасибо

1 Ответ

6 голосов
/ 11 ноября 2011

Было несколько похожих сообщений о проблемах состояния гонки между Chrome и dev_appserver.py. Обычная история заключается в том, что Chrome открывает несколько одновременных подключений к серверу, но сначала отправляет запрос на второе подключение. Поскольку dev_appserver является однопоточным, первый запрос блокируется, и сервер зависает, пока кто-то не сдастся.

Предположительно запуск Chrome с --disable-preconnect предотвращает это состояние.

...