3 回答

TA貢獻(xiàn)1719條經(jīng)驗 獲得超6個贊
閱讀try:語句。
try:
# do something
except socket.error, e:
# A socket error
except IOError, e:
if e.errno == errno.EPIPE:
# EPIPE error
else:
# Other error

TA貢獻(xiàn)1765條經(jīng)驗 獲得超5個贊
SIGPIPE(盡管我認(rèn)為也許是您的意思EPIPE?)在您關(guān)閉套接字然后向其發(fā)送數(shù)據(jù)時,套接字上會發(fā)生這種情況。一種簡單的解決方案是在嘗試發(fā)送套接字?jǐn)?shù)據(jù)之前不關(guān)閉套接字。這也可能發(fā)生在管道上,但這聽起來好像不是您正在經(jīng)歷的,因為它是網(wǎng)絡(luò)服務(wù)器。
您還可以僅在每個線程的某些頂級處理程序中應(yīng)用捕獲異常的創(chuàng)可貼。
當(dāng)然,如果您使用Twisted而不是為每個客戶端連接生成新線程,則可能不會出現(xiàn)此問題。如果多個線程處理同一個I / O通道,則很難正確地完成close和write操作的順序(取決于您的應(yīng)用程序)。
添加回答
舉報