Python提示[Errno 32]Broken pipe导致线程crash错误解决方法

2019-10-05 13:57:19王振洲

                self.wfile.flush() #actually send the response if not already done.
            print "after wfile.flush()"
        except socket.timeout, e:
            #a read or a write timed out.  Discard this connection
            self.log_error("Request timed out: %r", e)
            self.close_connection = 1
            return
    
    def do_GET(self):
        """
        处理get请求
        """
        query=self.path
        print "query: %s thread=%s" % (query, str(threading.current_thread()))
 
        ret_str="<html>" + self.path + "<br>" + str(self.server) +  "</html>"
 
        time.sleep(5)
        
        try:
            self.send_response(200)
            self.send_header('Content-type','text/html')
            self.end_headers()         
            self.wfile.write(ret_str)
        except socket.error, e:
            print "socket.error : Connection broke. Aborting" + str(e)
            self.wfile._sock.close()
            self.wfile._sock=None
            return False
       
        print "success prod query :%s" % (query)
        return True
 
#多线程处理
class ThreadingHTTPServer(ThreadingMixIn,HTTPServer):
    pass
    
if __name__ == '__main__':
    serveraddr = ('',9001)
 
    ser = ThreadingHTTPServer(serveraddr,RequestHandler)
    ser.serve_forever()
    sys.exit(0)