ฉันต้องการเพิ่มการหมดเวลาเริ่มต้นลงในโค้ดจำนวนมากได้อย่างง่ายดาย (สมมติว่าการหมดเวลาช่วยแก้ปัญหาของคุณได้)
นี่เป็นวิธีแก้ปัญหาที่ฉันเลือกจากตั๋วที่ส่งไปยังที่เก็บสำหรับการร้องขอ
เครดิต: 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)
    
    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,...