2011-12-26 2 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에 문제가없는 응용 프로그램 수정의 간단한 재시작이 문제 때문에 .

파이썬 2.6과 2.7을 모두 사용해 보았습니다. 동일한 상황이 발생합니다.

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

이 문제로 몇 게시물가 있었다 실행 만하고있어 간단한 설명이나 솔루션 없음 :

답변

1

I "너무 많은 파일 열기"상태에 빠지면 이런 현상이 발생한다고 생각하십시오. 다음에 이런 일이 발생하면 스크립트가 얼마나 많은 파일 설명자를 열어 놓았는지 확인하십시오.

+0

최근에는 전체 시스템에서 394 개의 파일 디스크립터 만 열렸습니다 ('lsof | wc -l'). – Endophage

0

근본적인 원인은 /etc/resolv.conf가 파이썬 시작시에만 읽혀진다는 것입니다. 해결 테이블을 강제로 새로 고치려면 다음을 실행하십시오. (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 * 질문에 대한 답을 맞추고 같은 장소에 여러 답을 붙여 넣지 마십시오. –