python requests 오류: Temporary failure in name resolution

간단하게 requests.get(url) 이런 식으로 웹페이지를 요청하는 코드에서 다음과 같은 오류가 발생했다. 로컬에서는 동작하는데 서버에 올리니 동작을 안 하는 상황.

Traceback (most recent call last):

  File "", line 1, in 

  File "/usr/local/lib/python3.6/site-packages/requests/api.py", line 72, in get

    return request('get', url, params=params, **kwargs)

  File "/usr/local/lib/python3.6/site-packages/requests/api.py", line 58, in request

    return session.request(method=method, url=url, **kwargs)

  File "/usr/local/lib/python3.6/site-packages/requests/sessions.py", line 508, in request

    resp = self.send(prep, **send_kwargs)

  File "/usr/local/lib/python3.6/site-packages/requests/sessions.py", line 618, in send

    r = adapter.send(request, **kwargs)

  File "/usr/local/lib/python3.6/site-packages/requests/adapters.py", line 508, in send

    raise ConnectionError(e, request=request)

requests.exceptions.ConnectionError: HTTPSConnectionPool(host='xxx.xxx.xxx', port=443): Max retries exceeded with url: / (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',))

로컬에서는 동작하는데, AWS EC2 instance에서 저런 오류가 나는 것은 DNS resolution이 안되는 것이라고 생각해서 DNS 설정에 다음을 추가해줬다.

/etc/resolv.conf 파일에 다음과 같이 구글 DNS를 추가

nameserver 8.8.8.8

그 뒤로는 잘 동작함. 오예.


<2020년 10월 19일 추가>

서버가 재시작 되었는데, /etc/resolv.conf 파일이 자동으로 초기화된다.
찾아보니까 /sbin/dhclient-script 에서 매번 자동으로 생성되는 파일이고, /etc/sysconfig/network-scripts/ifcfg-eth0 에 다음 내용을 맨 마지막에 추가해서 구글 DNS 서버가 자동으로 추가될 수 있게 할 수 있다.

DNS1="8.8.8.8"
DNS2="기본 DNS를 입력"

참고자료: https://gunnm.tistory.com/141

CC BY-NC-SA 4.0 This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Leave a Comment

Time limit is exhausted. Please reload CAPTCHA.