[python] 요청에 대한 타임아웃 설정하기

이 블로그 포스트에서는 Python을 사용하여 요청에 대한 타임아웃(timeout)을 설정하는 방법에 대해 알아보겠습니다.

타임아웃이란?

타임아웃은 특정 작업이 일정 시간 이내에 완료되지 않을 경우 작업을 중지하는 것을 의미합니다. 네트워크 요청을 보낼 때, 일정 시간 이내에 응답을 받지 못하면 이를 타임아웃으로 처리할 수 있습니다.

requests 모듈을 사용한 타임아웃 설정

Python에서 네트워크 요청을 보내는 많은 라이브러리 중에서, requests 모듈을 사용하여 타임아웃을 설정할 수 있습니다. 아래는 requests 모듈을 사용하여 GET 요청에 대한 타임아웃을 설정하는 예제 코드입니다.

import requests

url = "https://www.example.com"
timeout = 5  # 5초로 타임아웃 설정

try:
    response = requests.get(url, timeout=timeout)
    # 요청이 성공적으로 완료되었을 때의 처리
except requests.Timeout:
    print("타임아웃 발생!")
    # 타임아웃 발생 시의 처리
except requests.RequestException as e:
    print("요청 예외가 발생하였습니다:", e)
    # 기타 예외 처리

위의 코드에서 timeout 매개변수를 이용하여 타임아웃 값을 설정할 수 있습니다. 타임아웃 값은 초 단위로 지정하며, 요청에 대한 응답이 해당 시간 이내에 오지 않으면 requests.Timeout 예외가 발생합니다.

urllib 모듈을 사용한 타임아웃 설정

Python의 urllib 모듈을 사용하여도 타임아웃을 설정할 수 있습니다. 아래는 urllib 모듈을 사용하여 GET 요청에 대한 타임아웃을 설정하는 예제입니다.

import urllib.request
import socket

url = "https://www.example.com"
timeout = 5  # 5초로 타임아웃 설정

try:
    response = urllib.request.urlopen(url, timeout=timeout)
    # 요청이 성공적으로 완료되었을 때의 처리
except socket.timeout:
    print("타임아웃 발생!")
    # 타임아웃 발생 시의 처리
except urllib.error.URLError as e:
    print("요청 예외가 발생하였습니다:", e)
    # 기타 예외 처리

urllib 모듈에서는 urllib.request.urlopen 함수에 timeout 매개변수를 사용하여 타임아웃 값을 설정할 수 있습니다. 타임아웃 값은 초 단위로 지정하며, 요청에 대한 응답이 해당 시간 이내에 오지 않으면 socket.timeout 예외가 발생합니다.

결론

이 포스트에서는 Python을 사용하여 요청에 대한 타임아웃을 설정하는 방법을 알아보았습니다. 네트워크 요청을 보낼 때 타임아웃을 적절하게 설정하여 프로그램의 응답성을 향상시킬 수 있습니다.