2014-01-27 1 views

답변

25

에게 python-requests docs 것이다 reveal exactly how to set max_retries의 빠른 검색을 싶어요.

이 문서에서 직접 코드를 당겨하려면

import requests 
s = requests.Session() 
a = requests.adapters.HTTPAdapter(max_retries=3) 
b = requests.adapters.HTTPAdapter(max_retries=3) 
s.mount('http://', a) 
s.mount('https://', b) 
s.get(url) 

은 당신이 찾고있는 무엇, 그러나, 여러 가지 이유로 구성 할 수 없습니다 없습니다 :

  1. 요청은 더 이상 제공 구성 수단

  2. 재시도 횟수는 th에만 해당됩니다. e 어댑터가 세션이나 특정 요청에 사용되는 것이 아닙니다.

  3. 하나의 요청에 하나의 특정 최대 요청 수가 필요한 경우 다른 요청에 충분해야합니다.

이 변경 사항은 1 년 전에 요청 1.0에 도입되었습니다. 가장 합리적인 이유 때문에 의도적으로 2.0으로 보관했습니다. 또한 요청할 경우를 대비하여 최대 재시도 횟수를 구성하는 매개 변수를 도입하지 않을 것입니다. 당신이 시도가 작동하는 방식을 훨씬 더 정밀한 제어를 달성 할 수있는 유사한 방법을 사용


편집. 좋은 느낌을 얻기 위해 this을 읽을 수 있습니다. 즉, urllib3 (아래 참조)에서 Retry 클래스를 가져 와서 작동 방법을 알려야합니다. 우리는 이것을 urllib3에 전달하고 재시도를 다루기위한 더 나은 옵션 세트를 갖게됩니다.

from requests.packages.urllib3 import Retry 
import requests 

# Create a session 
s = requests.Session() 

# Define your retries for http and https urls 
http_retries = Retry(...) 
https_retries = Retry(...) 

# Create adapters with the retry logic for each 
http = requests.adapters.HTTPAdapter(max_retries=http_retries) 
https = requests.adapters.HTTPAdapter(max_retries=https_retries) 

# Replace the session's original adapters 
s.mount('http://', http) 
s.mount('https://', https) 

# Start using the session 
s.get(url) 
관련 문제