es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo reintentar python requests.get sin utilizar sesiones

Quiero volver a intentar el requests.get() de Python. Sé que podemos hacerlo con sesiones, pero en un caso específico necesito volver a intentar solo el requests.get(), así que quería saber cómo hacerlo. ¿Hay algún parámetro como en la sesión que podamos pasar?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, existe un parámetro llamado ‘retry’ que se puede utilizar para reintentar el comando requests.get(). El parámetro ‘retry’ especifica cuántas veces se debe reintentar una solicitud antes de darse por vencido.

    Aquí hay un ejemplo de cómo usar el parámetro ‘retry’:

    import requests
    
    conteo_reintentos = 3
    url = 'http://example.com/'
    
    for i in range(conteo_reintentos):
        try:
            respuesta = requests.get(url, timeout=10)
            if respuesta.status_code == 200:
                # Operación exitosa, salir del bucle
                break
        except:
            # Solicitud fallida, esperar un tiempo y reintentar
            time.sleep(5)
    

    El código anterior reintentará el comando requests.get() hasta tres veces antes de darse por vencido. Si el código de estado HTTP devuelto es 200, se considera que la operación ha sido exitosa y se sale del bucle. Si la solicitud falla, el código espera cinco segundos antes de intentarlo nuevamente.

    Cabe destacar que este enfoque no restaura el estado inicial de la conexión HTTP como lo hacen las sesiones, por lo que es posible que no siempre funcione en algunos casos particulares. Siempre es una buena práctica utilizar sesiones para solicitudes complejas que requieren reintentos, pero si solo necesitas reintentar una solicitud GET simple, el código anterior debería ser suficiente.

Comments are closed.