Solicitudes: gestión de tiempos de espera

Los tiempos de espera se pueden agregar fácilmente a la URL que está solicitando. Sucede que estás utilizando una URL de terceros y estás esperando una respuesta. Siempre es una buena práctica dar un tiempo de espera en la URL, ya que podríamos querer que la URL responda dentro de un período de tiempo con una respuesta o un error. Si no lo hace, puede hacer que se espere esa solicitud de forma indefinida.

Podemos dar tiempo de espera a la URL usando el parámetro de tiempo de espera y el valor se pasa en segundos como se muestra en el siguiente ejemplo:

Ejemplo

import requests
getdata = 
requests.get('https://jsonplaceholder.typicode.com/users',timeout=0.001)
print(getdata.text)

Salida

raise ConnectTimeout(e, request=request)
requests.exceptions.ConnectTimeout:
HTTPSConnectionPool(host='jsonplaceholder.typicode.com', 
port=443): Max retries exceeded with url: /users (Caused 
by Connect
TimeoutError(<urllib3.connection.VerifiedHTTPSConnection object at 
0x000000B02AD
E76A0>, 'Connection to jsonplaceholder.typicode.com timed out. (connect 
timeout = 0.001)'))

El tiempo de espera dado es el siguiente:

getdata = 
requests.get('https://jsonplaceholder.typicode.com/users',timeout=0.001)

La ejecución arroja un error de tiempo de espera de conexión como se muestra en la salida. El tiempo de espera dado es 0.001, que no es posible para que la solicitud recupere la respuesta y arroje un error. Ahora, aumentaremos el tiempo de espera y lo comprobaremos.

Ejemplo

import requests
getdata = 
requests.get('https://jsonplaceholder.typicode.com/users',timeout=1.000)
print(getdata.text)

Salida

E:\prequests>python makeRequest.py
[
   {
      "id": 1,
      "name": "Leanne Graham",
      "username": "Bret",
      "email": "[email protected]",
      "address": {
         "street": "Kulas Light",
         "suite": "Apt. 556",
         "city": "Gwenborough",
         "zipcode": "92998-3874",
         "geo": {
            "lat": "-37.3159",
            "lng": "81.1496"
         }
      },
      "phone": "1-770-736-8031 x56442",
      "website": "hildegard.org",
      "company": {
         "name": "Romaguera-Crona",
         "catchPhrase": "Multi-layered client-server neural-net",
         "bs": "harness real-time e-markets"
      }
   }
]

Con un tiempo de espera de 1 segundo, podemos obtener la respuesta para la URL solicitada.