【问题标题】:error: [Errno 10053]错误:[Errno 10053]
【发布时间】:2013-07-25 03:37:24
【问题描述】:

如果我在 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)?

【问题讨论】:

  • 您在收到此错误时究竟在做什么?
  • work :) - google chrome+pycharm,我没有防火墙,防病毒等。
  • 帮我在 app.run、app.run(threaded=True) 中添加了 threaded=True。

标签: python flask


【解决方案1】:

无论是 Flask、Python 2、Python 3 还是 HTTP,都可能发生此错误——它可能仅发生在套接字级别,并且很大程度上取决于您的具体情况。

例如,我的应用程序使用以太网设备/设备,该设备使用原始套接字进行命令和控制,并且我在socket 模块中使用create_connection 方法。在一段时间的流量不活动后尝试发送消息后,我会一直收到“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 的方式。尽管如此,在许多情况下,协议级别的“保持活动”可能是一个可行的选择。

【讨论】:

    【解决方案2】:

    你好, 这是 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) 的操作,服务器将重新启动。

    【讨论】:

    • 使用 python 3.6,我遇到了这个错误。有什么线索吗?
    【解决方案3】:

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

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

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

    如果我知道如何解决问题,我会告诉你

    【讨论】:

    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

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

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

      它对我有用。

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          【解决方案7】:

          来自Windows Sockets Error Codes 列表:

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

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

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

          【讨论】:

          • 但是我没有防火墙、杀毒软件等
          • 我列出了一些的可能性。
          • 这对我们来说是不可能的。您没有提供有关您当时正在做什么、您的平台、您的网络设置、您的客户端等的任何信息。我​​们坚持为您提供有关错误代码的一般信息。
          • @MartijnPieters 我也在想同样的事情。您可能想查看此帖子:stackoverflow.com/a/20421867/2290820
          • @vipin:当您的数据库套接字已关闭时,您当然也会收到套接字错误,但在 OP 的情况下,回溯是由于 HTTP 客户端已关闭连接。
          猜你喜欢
          • 2011-07-12
          • 1970-01-01
          • 2014-05-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-25
          • 2021-11-17
          • 1970-01-01
          相关资源
          最近更新 更多