BrokenPipeError
データを送っている途中で、相手側との通信経路(パイプ)が切れてしまったときに発生するエラーです。
原因
通信の相手側(サーバーやプロセス)が、こちらがデータを送り終える前に接続を閉じてしまうことが原因です。
エラーになるコード例
# 相手が既に接続を閉じた後にデータを送ろうとするイメージ
import socket
sock = socket.socket()
# ... 相手が切断済みの状態で ...
sock.send(b'hello')修正版
import socket
try:
sock.send(b'hello')
except BrokenPipeError:
print('通信相手との接続が切れています')よくある間違い
- 通信中に相手側が切断する可能性を考慮せずに送信処理を書いてしまう
- 長時間かかる通信で、タイムアウトや切断への対策をしていない