长时间运行后永久出现“名称解析临时失败”
在Linux上运行了几个小时后,我的Python 2.6程序开始出现这个错误,每次请求都会报错:
<class 'urllib2.URLError'> URLError(gaierror(-3, '临时名称解析失败'),)
如果我重启程序,它又可以正常工作了。我猜可能是某种资源耗尽的问题,但我不知道该怎么检查。请问我该如何诊断和解决这个问题?
2 个回答
0
我也遇到过同样的问题。在我的情况下,问题不是因为资源耗尽,而是因为我的DHCP服务器更改了名字服务器的地址。libc(一个处理系统调用的库)不想更新,还是使用之前的缓存文件,导致我每次地址变化时都得重启脚本。
在这种情况下,我所有的Python套接字连接尝试都失败了。于是我找到了一段代码,它解决了这个问题:
import ctypes
try:
libc = ctypes.CDLL('libc.so.6')
res_init = getattr(libc, '__res_init')
res_init(None)
except:
pass
在调用socket.connect之前使用这段代码,希望能帮到你。
19
这个问题是因为一个库没有正确关闭连接,导致很多连接卡在了CLOSE_WAIT状态。最终,这会因为资源耗尽而出现“临时名称解析失败”的错误。