Gun*_*ama 0 python python-3.x python-3.4
我使用以下代码从网络获取图像:
path = 'http://domgvozdem.ru/images/ustanovka-kondicionera-svoimi-rukami.jpg'
def exists(path):
r = requests.head(path)
return r.status_code == requests.codes.ok
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
发生了主要错误:('Connection aborted。',BadStatusLine(“''”,))发生了主要错误:('Connection aborted。',BadStatusLine(“”“,))
如何解决?它被主机阻止了吗?
当您的Python客户端收到一个空响应(标头/ body)时,会出现此错误。
BTW较新的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具有空主体和标头),正式而言,它应该返回状态代码408,这没有发生。
我们通过将两个参数的client_header_timeout / client_body_timeout增加到180s来解决了这个问题:
server {
..
client_body_timeout 180s;
client_header_timeout 180s;
}
Run Code Online (Sandbox Code Playgroud)