错误:[Errno 10053]

时间:2013-07-25 09:55:01

标签: python flask

如果我在Flask上编码,那么我有时会收到此错误:

Traceback (most recent call last):
  File "C:\Python27\lib\SocketServer.py", line 284, in _handle_request_noblock
    self.process_request(request, client_address)
  File "C:\Python27\lib\SocketServer.py", line 310, in process_request
    self.finish_request(request, client_address)
  File "C:\Python27\lib\SocketServer.py", line 323, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "C:\Python27\lib\SocketServer.py", line 640, in __init__
    self.finish()
  File "C:\Python27\lib\SocketServer.py", line 693, in finish
    self.wfile.flush()
  File "C:\Python27\lib\socket.py", line 303, in flush
    self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 10053] ��������� �� ����� ����-

为什么会发生这种情况的想法(win8 x64,python27 x32)?

7 个答案:

答案 0 :(得分:24)

来自Windows Sockets Error Codes列表:

  

WSAECONNABORTED 10053
  软件导致连接中止   已建立的连接由主机中的软件中止,可能是由于数据传输超时或协议错误。

发生超时或其他网络级错误。这是关闭套接字的操作系统,与Python或Flask无关,真的。

可能是远程浏览器停止响应,网络连接中断,或者防火墙因为打开时间太长或其他原因而关闭了连接。

答案 1 :(得分:9)

您好, 这是SocketServer模块的Python 2实现的一个问题,它不存在于Python 3中(服务器继续服务)。

  

您有3个选择:

     

不要将内置服务器用于生产系统(毕竟它是一个开发服务器)。使用正确的WSGI服务器,如gunicorn或uWSGI。

     

使用app.run启用线程模式(threaded = True);线程死了,但是为将来的请求创建了一个新线程,

     

升级到Python 3。

所以每当出现错误时

error: [Errno 10053] An established connection was aborted by the software in your host machine

如果你像app.run(threaded = True)那样重启了服务器。

答案 2 :(得分:4)

我最近在尝试使用Flask提供音频文件时遇到了此错误消息。每当客户端在流结束之前关闭流时,我都会收到此错误消息。 Flask继续尝试将数据写入流,但由于底层套接字已断开连接,因此不能。这实际上不是错误本身,而是一条消息,通知您在Flask完成向数据流写入数据之前,与客户端的连接已关闭。

答案 3 :(得分:3)

我刚刚经历过完全相同的问题。与最受欢迎的答案相反,这个问题与Python和Flask有很大关系,而且它不是Windows问题。 很容易重现:

  • 单击刻录应用程序中的链接,然后导航到另一个页面,而第一个页面仍在加载。每次出现错误并且应用程序崩溃(需要重新启动)
  • 如果我允许服务器完全返回页面,则问题永远不会发生。

此外,例如,瓶子微框架从未发生这种情况。

如果我发现如何解决问题,我会告诉你

答案 4 :(得分:2)

从Web服务器读取响应时遇到此问题。对于我的情况,问题是我太早关闭套接字连接,它打破了通信。 所以我在接收数据之前睡了几秒钟,然后关闭套接字连接。

time.sleep(10)
data = s.recv(1024)
s.close()

它对我有用。

答案 5 :(得分:0)

这是PIPE错误,如果服务器响应请求并且客户端已关闭连接,则会发生此错误。浏览器有时会根据使用情况来做。 您可以忽略那些适合生产的Web服务器。

答案 6 :(得分:0)

无论Flask,Python 2,Python 3或HTTP,都可能发生此错误-它可以仅在套接字级别发生,并且在很大程度上取决于您的实际情况。

作为示例,我的应用程序使用以太网设备/设备,该设备使用原始套接字进行命令和控制,而我正在create_connection模块中使用socket方法。在一段时间的交通不活动之后尝试发送消息后,我将始终得到“ Errno 10053”。计时测试表明,在闲置四分钟后尝试发送消息后,将发生此错误。以下页面指示240秒= 4分钟超时:

https://support.microsoft.com/en-us/help/170359/how-to-modify-the-tcp-ip-maximum-retransmission-time-out

在我的方案中,解决方案是确保发送到设备的消息不超过四分钟。我只是每60秒向设备发送一条小的请求消息,以避免发生10053错误-这起了协议级“保持活动”的作用(与TCP keepalive无关)。在这种情况下,问题可能特定于以太网设备及其实现TCP的方式。尽管如此,在许多情况下,协议级别的“保持活动”可能是一个可行的选择。