21

If I am coding on Flask, then I sometimes get this error:

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] ��������� �� ����� ����-

Any ideas why this would happen (win8 x64, python27 x32)?

4

7 回答 7

27

Windows 套接字错误代码列表:

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

出现超时或其他网络级错误。这是您的操作系统关闭套接字,实际上与 Python 或 Flask 无关。

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

于 2013-07-25T09:57:03.130 回答
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) 之类的操作,服务器将重新启动。

于 2016-11-28T09:39:33.017 回答
5

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

于 2013-09-24T22:02:46.790 回答
4

我刚刚遇到了完全相同的问题。与最受欢迎的答案相反,这个问题与 Python 和 Flask 有很大关系,而且它不是 Windows 问题。非常容易复制:

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

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

如果我找到解决问题的方法,我会告诉你

于 2016-10-25T15:32:04.177 回答
2

我在从 Web 服务器读取响应时遇到了这个问题。就我而言,问题是我过早地关闭了套接字连接,以至于它破坏了通信。所以我在接收数据之前睡了几秒钟,然后关闭了套接字连接。

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

这个对我有用。

于 2015-05-15T16:00:35.890 回答
2

无论 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 保持活动无关)。在这种情况下,问题可能特定于以太网设备及其实现 TCP 的方式。尽管如此,在许多情况下,协议级别的“保持活动”可能是一个可行的选择。

于 2018-12-04T00:57:36.210 回答
1

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

于 2015-09-19T08:23:51.763 回答