Python에서 요청에 대한 최대 재시도 설정
이 튜토리얼에서는 최대 재시도 초과라는 오류가 발생하는 이유와 Python에서 요청에 대해 max_retries
를 설정하는 방법을 설명합니다. 또한 서버의 로드로 인해 이 오류가 발생하는 경우 팁을 제공합니다.
Python에서 요청 오류, 원인 및 솔루션에 대해 max_retries
설정
Python에서 요청에 대해 max_retries
를 설정하는 방법을 살펴보기 전에 먼저 몇 가지 문제를 해결해 보겠습니다.
- 첫째, 이 오류는 URL이 올바르지 않은 경우 발생할 수 있습니다. 따라서 요청하는 URL이 유효한지 확인해야 합니다.
- 이 오류는 인터넷 연결로 인해 발생할 수도 있으므로 이러한 문제가 없는지 확인하십시오.
- 서버 과부하가 있을 때도 이 오류가 발생합니다. 서버 사용량이 많을 때 이러한 유형의 오류가 발생할 수 있습니다.
여기에서 URL 요청 재시도 횟수를 늘리는 현상이 도움이 됩니다. 어떻게 할 수 있는지 알아봅시다. 그러나 먼저 다음 코드를 살펴보십시오.
예제 코드:
import requests
# increass retries number
retries = 4 # enter the number of retires you want to increase
requests.adapters.DEFAULT_RETRIES = retries
이것은 Python에서 URL 요청에 대한 재시도 횟수를 늘릴 수 있는 방법인데 서버의 부하로 인해 이 오류가 발생하는 경우 다음 팁을 사용할 수 있습니다.
참고: 다음 명령을 사용하여 Python에
requests
모듈을 설치해야 합니다.
python -m pip install requests
Python에서 요청에 대해 max_retries
설정을 제거하는 팁
서버의 로드로 인해 이 오류가 발생하는 경우 다음 팁 중 하나를 사용할 수 있습니다.
-
keep_alive
비활성화세션의
keep_alive
기능을 비활성화할 수 있습니다. 다음 코드는 이를 수행하는 방법을 설명합니다.request_session = requests.session() # disable keep_alive request_session.keep_alive = False request_session.get(your_url)
-
시간 초과
사용서버가 과부하되거나 사용 중이거나 위치에서 멀리 떨어져 있는 경우 동일한 오류가 발생하는 이유가 될 수 있습니다. 이를 방지하기 위해 응답 시간을 늘릴 수 있습니다.
서버의
POST
및GET
요청 모두로 이를 수행할 수 있습니다. 예를 들어 다음 코드를 살펴보십시오.import requests # the time in seconds in this example is increasing time by 5 req = requests.get(your_url, timeout=5) req = requests.post(your_url, timeout=5)
timeout
매개변수에서 튜플을 사용할 수도 있습니다. 첫 번째 매개변수는 빌드 시간을 늘리고 두 번째 매개변수는 응답 시간을 늘립니다. 코드 예제는 다음과 같습니다.req = requests.get(your_url, timeout=(3, 6))
-
backoff_factor
(지연/절전) 설정backoff_factor
는 초기에 네트워크 연결을 설정하기 위해 요청에 사용되는urllib3
인수입니다.각 시도의 시도 횟수와 절전 시간을 늘리기 위해
backoff_factor
를 설정할 수도 있습니다.이 오류가 발생하지 않도록 합니다. 이를 통해 코드 조각을 중지하고 서버의 응답을 받을 때까지 기다리게 합니다.
다음은 서비스 요청이 실패할 때마다
backoff_factor
가 서비스 요청을 지연시키는 방법에 대한 그림입니다.# you can set a backoff factor means delay/sleep time in each retry import requests from requests.adapters import HTTPAdapter from requests.packages.urllib3.util.retry import Retry # initailize the request session request_session = requests.Session() # initailizing retry object # you can increase the number of total retires and sleep time of each retry retries = Retry(total=3, backoff_factor=1) adapter = HTTPAdapter(max_retries=retry) request_session.mount("http://", adapter) request_session.get(your_url)
urllib3
문서에 따르면backoff_factor
는 라이브러리가 재시도 사이의 휴면 간격을 결정하는 데 사용하는 기본 값입니다.예를 들어 연결 시도가 실패할 때마다
urllib3
은{backoff_factor} * (2(총 재시도 횟수 - 1))
초 동안 휴면 상태가 됩니다.예를 들어
backoff_factor
가0.01
로 설정된 경우sleep()
은0.0s
,0.2s
,0.4s
,… 동안 재시도 사이에 휴면 상태가 됩니다. 백오프는 기본적으로 비활성화되어 있습니다(0
으로 설정).반환된 상태 코드가
500
,502
,503
또는504
인 경우 추가로 재시도를 요구합니다. 재시도를 더 세밀하게 제어하려면 재시도를 수정할 수 있습니다.
Haider specializes in technical writing. He has a solid background in computer science that allows him to create engaging, original, and compelling technical tutorials. In his free time, he enjoys adding new skills to his repertoire and watching Netflix.
LinkedIn