Varsayılan bir zaman aşımının bir grup koda kolayca eklenmesini istedim (zaman aşımının sorununuzu çözeceğini varsayarak)
Bu, Talepler için arşive gönderilen bir biletten aldığım çözüm.
kredi: https://github.com/kennethreitz/requests/issues/2011#issuecomment-477784399
Çözüm, buradaki son birkaç satırdır, ancak daha iyi bağlam için daha fazla kod gösteriyorum. Yeniden deneme davranışı için bir oturum kullanmayı seviyorum.
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
o zaman bunun gibi bir şey yapabilirsiniz:
requests_session = requests_retry_session()
r = requests_session.get(url=url,...