現在、Python で構築されたアプリを使用しています。パソコンで実行すると、問題なく動作します。
しかし、これを本番サーバーに移動すると、次のようなエラーが表示され続けます。
調査したところ、サーバーがまだデータの送信に忙しいときにエンドユーザーのブラウザが接続を停止する理由がわかりました。
なぜこのようなことが起こったのか、また、私のパソコンでは正常に動作するのに、本番サーバーでは正常に動作しない根本的な原因は何なのか疑問に思います。アドバイスをいただければ幸いです。
Exception happened during processing of request from ('127.0.0.1', 34226)
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/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
ベストアンサー1
サーバー プロセスがSIGPIPE
ソケットへの書き込みを受信しました。これは通常、相手側 (クライアント側) で完全に閉じられたソケットに書き込むときに発生します。これは、クライアント プログラムがサーバーからのすべてのデータが受信されるまで待たずに、単にソケットを閉じる (close
関数を使用) ときに発生する可能性があります。
C プログラムでは通常、SIGPIPE
シグナルを無視するように設定するか、シグナル用のダミー シグナル ハンドラーを設定します。この場合、閉じたソケットに書き込むと単純なエラーが返されます。あなたの場合、Python はクライアントの早期切断として処理できる例外をスローしているようです。