在Linux上运行了几个小时后,使用urllib2,httplib和线程的Python 2.6程序开始针对每个请求引发此错误:
<class 'urllib2.URLError'> URLError(gaierror(-3, 'Temporary failure in name resolution'),)
如果我重新启动程序,它会重新开始工作。我的猜测是某种资源枯竭但我不知道如何检查它。我该如何诊断并解决问题?
答案 0 :(得分:12)
这是由于库无法关闭连接导致大量连接陷入CLOSE_WAIT状态。最终,由于资源耗尽,这会导致“名称解析暂时失败”错误。
答案 1 :(得分:0)
遇到了同样的问题,在我的情况下它没有资源耗尽,我的问题发生在我的dhcp服务器更改了nameserver地址时,libc不想玩球并重新加载新的resolv.conf文件,维护缓存一,并强制我每次更改时重新启动脚本。
此后我的所有python套接字连接都尝试失败,所以我发现this code解决了这种情况:
{{1}}
在调用socket.connect之前使用它,希望这有帮助