requests.exceptions.ProxyError와 urllib3.exceptions.ProxyError은 서로 다른 예외 클래스입니다. 짧은 이름이 같다고 해서 하나의 except 절이 둘 다 잡지는 않습니다.

Requests 호출이라면 Requests의 공개 예외 API부터 시작하세요. 전송 어댑터는 보통 하위 수준 실패를 Requests가 노출하는 예외로 변환합니다. 구버전에는 특정 래핑 버그가 있었으므로 예상치 못한 traceback이 나오면 라이브러리 버전을 함께 기록하세요.

조사할 때는 예외의 모듈, 클래스, 연결된 원인을 확인하세요. 중첩된 MaxRetryError나 연결 실패는 이전 프록시 단계에 대한 유용한 증거를 간직할 수 있습니다.

과거 우회책에서 온 오래된 vendored 경로를 현대 애플리케이션으로 가져오지 마세요. 현재 호출에 맞는 공개 예외를 잡고, 진단을 위해 원인을 보존하며, 재시도 동작은 별도로 결정하세요. 모든 Exception을 잡고 영원히 계속하는 것은 원래의 불일치를 숨길 뿐입니다.

관련 글