如何在python中处理管道破损(SIGPIPE)?


问题内容

我用python编写了一个简单的多线程游戏服务器,该服务器为每个客户端连接创建了一个新线程。我发现每时每刻,服务器都会由于管道中断/
SIGPIPE错误而崩溃。我很确定程序尝试将响应发送回不再存在的客户端时会发生这种情况。

有什么好办法解决这个问题?我首选的解决方案是简单地关闭与客户端的服务器端连接并继续,而不是退出整个程序。

PS:问题/解答以通用方式处理该问题;我应该如何具体解决呢?


问题答案:

阅读try:语句。

try:
    # do something
except socket.error, e:
    # A socket error
except IOError, e:
    if e.errno == errno.EPIPE:
        # EPIPE error
    else:
        # Other error