मैं कोड के एक समूह में आसानी से डिफ़ॉल्ट टाइमआउट चाहता था (यह मानते हुए कि टाइमआउट आपकी समस्या हल करता है)
यह वह समाधान है जिसे मैंने अनुरोध के लिए भंडार में प्रस्तुत टिकट से उठाया था।
श्रेय: https://github.com/kennethreitz/requests/issues/2011#issuecomment-477784399
समाधान यहाँ लाइनों की अंतिम जोड़ी है, लेकिन मैं बेहतर संदर्भ के लिए अधिक कोड दिखाता हूं। मैं रिट्रीट व्यवहार के लिए एक सत्र का उपयोग करना पसंद करता हूं।
import requests
import functools
from requests.adapters import HTTPAdapter,Retry
def requests_retry_session(
retries=10,
backoff_factor=2,
status_forcelist=(500, 502, 503, 504),
session=None,
) -> requests.Session:
session = session or requests.Session()
retry = Retry(
total=retries,
read=retries,
connect=retries,
backoff_factor=backoff_factor,
status_forcelist=status_forcelist,
)
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)
# set default timeout
for method in ('get', 'options', 'head', 'post', 'put', 'patch', 'delete'):
setattr(session, method, functools.partial(getattr(session, method), timeout=30))
return session
तो आप ऐसा कुछ कर सकते हैं:
requests_session = requests_retry_session()
r = requests_session.get(url=url,...