MISE À JOUR: https://requests.readthedocs.io/en/master/user/advanced/#timeouts
Dans la nouvelle version de requests
:
Si vous spécifiez une valeur unique pour le délai d'expiration, comme ceci:
r = requests.get('https://github.com', timeout=5)
La valeur du délai d'expiration sera appliquée à la fois au connect
et aux read
délais d' expiration . Spécifiez un tuple si vous souhaitez définir les valeurs séparément:
r = requests.get('https://github.com', timeout=(3.05, 27))
Si le serveur distant est très lent, vous pouvez dire aux requêtes d'attendre indéfiniment une réponse, en passant None comme valeur de délai d'expiration, puis en récupérant une tasse de café.
r = requests.get('https://github.com', timeout=None)
Ma vieille réponse (probablement obsolète) (qui a été publiée il y a longtemps):
Il existe d'autres moyens de surmonter ce problème:
1. Utilisez la TimeoutSauce
classe interne
De: https://github.com/kennethreitz/requests/issues/1928#issuecomment-35811896
import requests from requests.adapters import TimeoutSauce
class MyTimeout(TimeoutSauce):
def __init__(self, *args, **kwargs):
connect = kwargs.get('connect', 5)
read = kwargs.get('read', connect)
super(MyTimeout, self).__init__(connect=connect, read=read)
requests.adapters.TimeoutSauce = MyTimeout
Ce code devrait nous amener à définir le délai de lecture comme égal au délai de connexion, qui est la valeur du délai que vous passez lors de votre appel Session.get (). (Notez que je n'ai pas réellement testé ce code, il peut donc nécessiter un débogage rapide, je l'ai juste écrit directement dans la fenêtre GitHub.)
2. Utilisez une fourchette de requêtes de kevinburke: https://github.com/kevinburke/requests/tree/connect-timeout
De sa documentation: https://github.com/kevinburke/requests/blob/connect-timeout/docs/user/advanced.rst
Si vous spécifiez une valeur unique pour le délai d'expiration, comme ceci:
r = requests.get('https://github.com', timeout=5)
La valeur du délai d'expiration sera appliquée à la fois aux délais de connexion et de lecture. Spécifiez un tuple si vous souhaitez définir les valeurs séparément:
r = requests.get('https://github.com', timeout=(3.05, 27))
kevinburke a demandé qu'il soit fusionné dans le projet de requêtes principal, mais il n'a pas encore été accepté.