HOWTO · Python
Python에서 요청에 대한 최대 재시도 설정
이 튜토리얼은 Python에서 요청에 대해 max_retries를 설정하는 방법을 보여줍니다.
이 튜토리얼에서는 최대 재시도 초과라는 오류가 발생하는 이유와 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인 경우 추가로 재시도를 요구합니다. 재시도를 더 세밀하게 제어하려면 재시도를 수정할 수 있습니다.