Saya ingin batas waktu default dengan mudah ditambahkan ke sekumpulan kode (dengan asumsi batas waktu menyelesaikan masalah Anda)
Ini adalah solusi yang saya ambil dari tiket yang dikirimkan ke repositori untuk Permintaan.
kredit: https://github.com/kennethreitz/requests/issues/2011#issuecomment-477784399
Solusinya adalah beberapa baris terakhir di sini, tetapi saya menunjukkan lebih banyak kode untuk konteks yang lebih baik. Saya suka menggunakan sesi untuk mencoba lagi perilaku.
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
maka Anda dapat melakukan sesuatu seperti ini:
requests_session = requests_retry_session()
r = requests_session.get(url=url,...