외부 API 수천 건 호출하는 자동화 스크립트 작성 중입니다. 간헐적으로 커넥션 타임아웃이 발생해 전체 프로세스가 멈춥니다.
코드:
import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
session = requests.Session()
retry = Retry(total=3, backoff_factor=1, status_forcelist=[500, 502, 503, 504])
adapter = HTTPAdapter(max_retries=retry)
session.mount('https://', adapter)
url = "https://api.example.com/data"
for i in range(1000):
try:
resp = session.get(url, timeout=5)
print(resp.status_code)
except requests.exceptions.ConnectTimeout:
print("Timeout occurred")
오류: requests.exceptions.ConnectTimeout: HTTPConnectionPool(host='api.example.com', port=443): Max retries exceeded with url
시도: HTTPAdapter의 Retry 설정 적용했으나 ConnectTimeout 단계에서는 작동 안 함.
질문: ConnectTimeout 발생 시에도 HTTPAdapter의 Retry 로직이 작동하게 하려면 어떻게 설정해야 합니까?
댓글4
-
빗방울
2026.10.31 01:15
-
빗방울
2026.10.31 06:39
맞음ㅋㅋ 근데 raise_on_status는 에러 안 던지고 넘기는 거라 재시도 횟수랑은 별개일 것 같긴 함ㄷㄷ
-
빗방울
2026.10.31 03:35
Retry 설정에 connect 옵션 추가해보셈요ㅋㅋ
그거 안 넣으면 커넥션 단계 타임아웃은 그냥 뻗어버리는걸로 알고 있음ㄷㄷ
-
빗방울
2026.10.31 04:38
Retry 설정에 connect=3 이런식으로 명시적으로 횟수 지정해보세요ㅋㅋ 그거 안 하면 기본값 때문에 씹히는 경우 많더라고요ㄷㄷ
모든 이야기1511
가벼운 안부부터 깊은 생각까지, 함께 나눠요.
총 1511개의 이야기
Retry 설정에 raise_on_status=False 넣어보심?
아니면 connect 옵션 따로 줘야 될듯요ㅋㅋ ㄷㄷ