Python/Advanced

[requests] 라이브러리 Timeout 에러 분류

yubi5050 2024. 12. 20. 17:13

Timeout 에러 

timeout 에러 발생시, 다양한 이유에서 Timeout 504 에러가 발생 할 수 있다.

 

ConnectTimeOut 

연결 수립 과정(Connection TimeOut) 에서의 에러

해당 서버로 아예 연결 수립 과정에서 막히는 경우

timeout=0.0001 : 0.0001 초 안에 연결 수립 되어야 한다고 가정

import requests
from requests.exceptions import ReadTimeout, ConnectTimeout

############## Error - ConnectTimeout 에러! ##############
url = "https://alden-kang.tistory.com/20"
try:
    # 의도적으로 매우 짧은 타임아웃으로 연결 수립 조차 못하게 설정 (0.001초)
    response = requests.get(url, timeout=0.0001)
    print(response.text)
except ConnectTimeout as e:
    print("ConnectTimeout: 서버의 연결이 수립되지 못했습니다.", e)
except ReadTimeout as e:
    print("ReadTimeout: 서버의 응답이 시간 안에 오지 않았습니다.", e)

 

ReadTimeout 

데이터를 받아오는 과정에서 (ReadTimeOut) 에서의 에러

연결은 성공하였고, (ConnectTimeout)

데이터를 받아오는 과정에서 Timeout 에러가 발생하는 경우

해당 서버의 http 통신 데이터 응답(response)이 느리다거나, 쿼리가 느린 경우 등 데이터를 제한 시간안에 못받은 경우 발생한다.

import requests
from requests.exceptions import ReadTimeout, ConnectTimeout

############## Error - ReadTimeout 에러! ##############
url = "http://localhost:8000/api/health"  # 로컬 서버 사용
try:
    # 수립 후 데이터 받는 과정 -> api에는 time.sleep(3)을 걸어주세요.
    response = requests.get(url, timeout=1)
    print(response.text)
except ConnectTimeout as e:
    print("ConnectTimeout: 서버의 연결이 수립되지 못했습니다.", e)
except ReadTimeout as e:
    print("ReadTimeout: 서버의 응답이 시간 안에 오지 않았습니다.", e)