Python の error: [Errno 32] Broken pipe について
Google App Engine Python でアプリを作って動かしていたら、たまにコンソール上で error: [Errno 32] Broken pipe って出てくるので一応調べてみました。
Exception happened during processing of request from ('127.0.0.1', 59250) Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/SocketServer.py", line 283, in _handle_request_noblock self.process_request(request, client_address) File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/SocketServer.py", line 309, in process_request self.finish_request(request, client_address) File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/SocketServer.py", line 322, in finish_request self.RequestHandlerClass(request, client_address, self) File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver.py", line 2564, in __init__ BaseHTTPServer.BaseHTTPRequestHandler.__init__(self, *args, **kwargs) File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/SocketServer.py", line 618, in __init__ self.finish() File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/SocketServer.py", line 661, in finish self.wfile.flush() File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/socket.py", line 297, in flush self._sock.sendall(buffer(data, write_offset, buffer_size)) error: [Errno 32] Broken pipe
調べた結果、どうやらエラーの原因は、データ転送中にクライアント側(主にブラウザ)のコネクションが切れてしまったことによるものだそうです。なるほど。確かに memcache の検証で F5 押しまくってたら出てきたので、あんまり無茶はすんなってことですね。