我有一个在NGINX后面运行的Werkzeug服务器 . 当客户端在等待Werkzeug服务器响应时断开连接时,NGINX将管道关闭到Werkzeug . 当python程序将响应写入Werkzeug时,会发生以下异常并且Werkzeug崩溃:
回溯(最近一次调用最后一次):文件“server.py”,第81行,在app.run中(host = args.host,port = args.port,debug = False)文件“/ usr / local / lib / python2 .7 / dist-packages / flask / app.py“,第843行,运行run_simple(host,port,self,** options)文件”/usr/local/lib/python2.7/dist-packages/werkzeug/ service.py“,第694行,在run_simple inner()文件”/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py“,第659行,在内部srv.serve_forever()文件中”/ usr / local / lib / python2.7 / dist-packages / werkzeug / serving.py“,第499行,在serve_forever HTTPServer.serve_forever(self)文件”/usr/lib/python2.7/SocketServer.py“,第238行,在serve_forever self._handle_request_noblock()文件“/usr/lib/python2.7/SocketServer.py”,第297行,在_handle_request_noblock中,self.handle_error(request,client_address)文件“/usr/lib/python2.7/SocketServer . py“,第295行,在_handle_request_noblock中,self.process_request(request,client_address)文件”/usr/lib/python2.7/SocketServer.py“,第321行,在process_request self.finish中_request(request,client_address)文件“/usr/lib/python2.7/SocketServer.py”,第334行,在finish_request self.RequestHandlerClass(request,client_address,self)文件“/usr/lib/python2.7/SocketServer . py“,第651行,在init self.finish()文件”/usr/lib/python2.7/SocketServer.py“,第710行,在完成self.wfile.close()文件”/ usr / lib / python2 . 7 / socket.py“,第279行,关闭self.flush()文件”/usr/lib/python2.7/socket.py“,第303行,刷新self._sock.sendall(view [write_offset:write_offset buffer_size ])socket.error:[Errno 32]管道破裂
我是否缺少一些配置选项以防止崩溃?通常会捕获所有异常并返回500错误,服务器保持活动状态 .
1 回答
据我所知,从调试跟踪和不读取源代码,您可能过早地关闭套接字 .
How to prevent errno 32 broken pipe?