2012-01-06 5 views
8

먼저 내 문제는 this one과 매우 비슷합니다. urllib.urlopen()의 타임 아웃에서 처리 할 수있는 예외를 생성하고 싶습니다.파이썬 3에서 urllib의 타임 아웃을 처리하는 방법은 무엇입니까?

URLError에 해당하지 않습니까?

try: 
    response = urllib.request.urlopen(url, timeout=10).read().decode('utf-8') 
except (HTTPError, URLError) as error: 
    logging.error(
     'Data of %s not retrieved because %s\nURL: %s', name, error, url) 
else: 
    logging.info('Access successful.') 

오류 메시지 :.

RESP = urllib.request.urlopen (REQ가 제한 = 10) .read()가 ("UTF-8")
파일 "디코딩/USR /lib/python3.2/urllib/request.py ", 줄 138, urlopen에서
return opener.open (url, data, timeout)
파일"/usr/lib/python3.2/urllib/request.py ", 줄 369, 열어
응답 = self._open (req, data)
파일" /usr/lib/python3.2/urllib/request.py "387 번 줄, _open
'_open', req)
파일"/usr/lib/python3.2/urllib/request.py ", 줄 _call_chain
결과의 FUNC = 347 (* 인수) http_open
복귀 self.do_open에
파일 "/usr/lib/python3.2/urllib/request.py"선 1156 (http.client.HTTPConnection do_open
R = h.getresponse에서, REQ)
파일 "/usr/lib/python3.2/urllib/request.py"라인 1,141()
파일 "/usr/lib/python3.2/ http/client.py ", 줄 1046, getresponse
sponse.begin()
파일 "/usr/lib/python3.2/http/client.py"라인 (346)에
버전, 상태 이유 self._read_status =()
파일 "/ USR을 시작/_read_status에서
줄 = str (self.fp.readline (_MAXLINE + 1), "iso-8859-1")
파일 "/ usr/lib/python3.2/http/client.py" readinto
반환 self._sock.recv_into에 lib 디렉토리/python3.2/socket.py ", 라인 (276), (b)는
socket.timeout : 주요 차 있었다

시간 초과 Python 3에서 urlliburllib2 모듈을 urllib으로 재구성했을 때 이것을 일으키는 변화가 있었을 가능성이 있습니까?

+0

예외 유형을 쉽게 발견하는 방법은'예외로 e : print (type (e))'를 제외하면됩니다. . 예외를 재현 할 수 있다고 가정합니다. – polvoazul

답변

18

예외는 소켓에서 타임 아웃, 그래서

from socket import timeout 
try: 
    response = urllib.request.urlopen(url, timeout=10).read().decode('utf-8') 
except (HTTPError, URLError) as error: 
    logging.error('Data of %s not retrieved because %s\nURL: %s', name, error, url) 
except timeout: 
    logging.error('socket timed out - URL %s', url) 
else: 
    logging.info('Access successful.') 

는 새로운 예외를 잡을 것이다. 비록 당신의 질문에 대한 답이 맞는지 확신 할 수 없지만 귀하의 질문이 무엇인지 모르겠습니다.

관련 문제