【问题标题】:Connection aborted.', BadStatusLine("''",) on server?连接中止。',服务器上的 BadStatusLine("''",)?
【发布时间】:2018-02-15 18:41:37
【问题描述】:

我使用以下代码从网络获取图像:

path = 'http://domgvozdem.ru/images/ustanovka-kondicionera-svoimi-rukami.jpg'
def exists(path):
    r = requests.head(path)
    return r.status_code == requests.codes.ok

我遇到了一个错误:

发生主要错误:('Connection aborted.', BadStatusLine("''",)) 发生主要错误:('Connection aborted.', BadStatusLine("''",))

如何解决这个问题?是不是被主机屏蔽了?

【问题讨论】:

    标签: python python-3.x python-3.4


    【解决方案1】:

    当您的 Python 客户端收到空响应(标头/正文)时,您会收到此错误。

    顺便说一句,较新的 Python 版本会抛出不同的异常, 当服务器断开连接或网络问题时,可能会发生这种情况。

    在我的例子中,我们花了几个星期试图重现它,直到找到主要原因, 我们有一个 Python 应用程序向 Nginx 负载均衡器后面的服务发送请求,

    我们发现当客户端超过默认的Nginx配置client_header_timeout / client_body_timeout(60秒)时,Nginx断开连接,这是Nginx将等待来自客户端的额外数据包的时间。

    你可以关注这个参考http://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_timeout

    当我们的应用程序加载 CPU 处理时,连接已建立,但标头和请求正文在传输之前有很长的延迟,超过 82 秒。

    所以 Nginx 关闭连接并返回重置数据包(记录的 tcpdump 带有空的 body 和 headers),正式它应该返回状态码 408,这没有发生。

    我们通过将两个参数的 client_header_timeout / client_body_timeout 增加到 180 来解决这个问题:

    server {
    ..
    client_body_timeout 180s;
    client_header_timeout 180s;
    }
    

    【讨论】:

      猜你喜欢
      • 2015-04-17
      • 1970-01-01
      • 2019-11-30
      • 2015-10-14
      • 2016-11-18
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多