永久性“名称解析暂时失败”跑了几个小时后

发布于 2024-12-19 08:22:19 字数 232 浏览 1 评论 0 原文

在 Linux 上运行几个小时后,我使用 urllib2、httplib 和线程的 Python 2.6 程序开始对每个请求引发此错误:

URLError(gaierror(-3, '名称解析暂时失败'),)

如果我重新启动程序,它会再次开始工作。我的猜测是某种资源耗尽,但我不知道如何检查它。如何诊断并解决问题?

After running for a number of hours on Linux, my Python 2.6 program that uses urllib2, httplib and threads, starts raising this error for every request:

<class 'urllib2.URLError'> URLError(gaierror(-3, 'Temporary failure in name resolution'),)

If I restart the program it starts working again. My guess is some kind of resource exhaustion but I don't know how to check for it. How do I diagnose and fix the problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

闻呓 2024-12-26 08:22:19

这是由于库未能关闭连接导致大量连接陷入 CLOSE_WAIT 状态。最终,由于资源耗尽,这会导致“名称解析暂时失败”错误。

This was caused by a library's failure to close connections, leading to a large number of connections stuck in a CLOSE_WAIT state. Eventually this causes the 'Temporary failure in name resolution' error due to resource exhaustion.

萌化 2024-12-26 08:22:19

遇到同样的问题,就我而言,这不是资源耗尽,对我来说问题发生在我的 dhcp 服务器更改名称服务器地址时,libc 不想发挥作用并重新加载新的 resolv.conf 文件,维护缓存的文件并强制我每次更改时都重新启动脚本。

此后我所有的 python 套接字连接尝试都失败了,所以我发现 这段代码< /a> 解决了这个问题:

import ctypes
try:
    libc = ctypes.CDLL('libc.so.6')
    res_init = getattr(libc, '__res_init')
    res_init(None)
except:
    pass

在调用 socket.connect 之前使用它,希望这有帮助

Was experiencing the same issue, in my case it wasnt resource exhaustion, the problem for me happened when my dhcp server changed the nameserver address, libc did not want to play ball and reload the new resolv.conf file, maintaining the cached one and forcing me to restart the script every time it changed.

All my python socket connections attempts fail after this, so I found this code that solved the situation:

import ctypes
try:
    libc = ctypes.CDLL('libc.so.6')
    res_init = getattr(libc, '__res_init')
    res_init(None)
except:
    pass

Use it before calling the socket.connect, hope this helps

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文