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.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Puedes implementar una lógica de reintento en el bloque except, específicamente para la excepción ConnectionError. Aquí tienes un ejemplo:

    import requests
    from requests.exceptions import ConnectionError, RequestException
    import time
    
    def some_func(url):
        retries = 3  # número máximo de reintentos
        delay = 1    # tiempo de espera entre reintentos
        while retries > 0:
            try:
                resp = requests.get(url)
                resp.raise_for_status()  # generar un HTTPError para los códigos de estado 4xx, 5xx
                return resp.content
            except ConnectionError as e:
                print(f"ConnectionError: {str(e)}. Reintentando en {delay} segundos.")
                time.sleep(delay)
                retries -= 1
            except RequestException as e:
                print(f"RequestException: {str(e)}.")
                break  # otras excepciones, detener el reintento
        return None  # la solicitud falló después de los reintentos máximos
    

    En este código, utilizamos un bucle while para realizar la solicitud hasta un número máximo de veces (3, en este caso). Capturamos la excepción ConnectionError y esperamos un breve tiempo antes de intentar la solicitud nuevamente. Si se supera el número máximo de reintentos, devolvemos None para indicar que la solicitud falló.

    Puedes ajustar el número de reintentos y el tiempo de espera entre reintentos según tus necesidades. También puedes capturar otras excepciones y manejarlas de acuerdo a ello.

Comments are closed.