ACTUALIZACIÓN: https://requests.readthedocs.io/en/master/user/advanced/#timeouts
En nueva versión de requests
:
Si especifica un valor único para el tiempo de espera, así:
r = requests.get('https://github.com', timeout=5)
El valor del tiempo de espera se aplicará tanto a connect
los read
tiempos de espera como a los tiempos de espera. Especifique una tupla si desea establecer los valores por separado:
r = requests.get('https://github.com', timeout=(3.05, 27))
Si el servidor remoto es muy lento, puede indicarle a Solicitudes que esperen una respuesta para siempre, pasando Ninguno como valor de tiempo de espera y luego recuperando una taza de café.
r = requests.get('https://github.com', timeout=None)
Mi respuesta anterior (probablemente desactualizada) (que se publicó hace mucho tiempo):
Hay otras formas de superar este problema:
1. Usa la TimeoutSauce
clase interna
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
Este código debería hacer que establezcamos el tiempo de espera de lectura como igual al tiempo de espera de conexión, que es el valor de tiempo de espera que pasa en su llamada Session.get (). (Tenga en cuenta que en realidad no he probado este código, por lo que puede necesitar alguna depuración rápida, simplemente lo escribí directamente en la ventana de GitHub).
2. Use una bifurcación de solicitudes de kevinburke: https://github.com/kevinburke/requests/tree/connect-timeout
De su documentación: https://github.com/kevinburke/requests/blob/connect-timeout/docs/user/advanced.rst
Si especifica un valor único para el tiempo de espera, así:
r = requests.get('https://github.com', timeout=5)
El valor de tiempo de espera se aplicará a los tiempos de espera de conexión y lectura. Especifique una tupla si desea establecer los valores por separado:
r = requests.get('https://github.com', timeout=(3.05, 27))
kevinburke ha solicitado que se fusione con el proyecto de solicitudes principales, pero aún no ha sido aceptado.