2011-12-26 20 views
6

我有一个长时间运行的python脚本,与新贵一起启动。这个脚本提出了很多要求。一切起初效果很好,几个小时后,但我开始永久收到以下错误为每个请求:永久gaierror运行几个小时后'名称解析中的临时失败'

File "/opt/a/a-env/local/lib/python2.7/site-packages/atom/client.py", line 119, in request 
    File "/opt/a/a-env/local/lib/python2.7/site-packages/atom/http_core.py", line 420, in request 
    File "/opt/a/a-env/local/lib/python2.7/site-packages/atom/http_core.py", line 489, in _http_request 
    File "/usr/lib/python2.7/httplib.py", line 931, in endheaders 
    File "/usr/lib/python2.7/httplib.py", line 794, in _send_output 
    File "/usr/lib/python2.7/httplib.py", line 756, in send 
    File "/usr/lib/python2.7/httplib.py", line 1134, in connect 
    File "/usr/lib/python2.7/socket.py", line 553, in create_connection 
gaierror: [Errno -3] Temporary failure in name resolution 

这不是名称解析或DNS问题,因为应用程序修补的一个简单的重启这个问题。

我已经尝试了Python 2.6 a 2.7和发生同样的情况。

我跑Linux 2.6.35-30-virtual #61-Ubuntu SMP Tue Oct 11 18:26:36 UTC 2011 x86_64 GNU/Linux

已经有解决这个问题的几个帖子,但没有一个简单的解释或解决方案:

回答

1

我当您遇到“打开文件过多”的情况时,会发生这种情况。下次发生这种情况时,请尝试查看您的脚本已打开多少个文件描述符。

+0

已经得到它最近,只有394文件描述符横跨整个系统的开放('lsof的|厕所-l')。 – Endophage 2013-08-27 18:26:58

0

根本原因是/etc/resolv.conf只能在python启动时读取。要强制决心表的刷新,就可以运行这个(在Linux上):

import ctypes 
libc = ctypes.cdll.LoadLibrary('libc.so.6') 
res_init = libc.__res_init 
res_init() 
+0

请不要在多个问题上发布相同的答案。如果相同的信息真的回答了这两个问题,那么一个问题(通常是较新的问题)应该作为另一个问题的副本来结束。你可以通过[投票将其关闭为重复]来表明这一点(http://stackoverflow.com/help/privileges/close-questions),或者如果你没有足够的声望,[举起一个旗帜]( http://stackoverflow.com/help/privileges/flag-posts)表明它是重复的。否则,请确保您针对* this *问题量身定制答案,并且不要将相同的答案粘贴到多个地方。 – 2016-05-24 19:46:15

相关问题