Establecer reintentos máximos para solicitudes en Python
Este tutorial describe por qué recibimos un error que dice que se excedieron los reintentos máximos y cómo podemos configurar max_retries
para las solicitudes en Python. También nos brinda consejos si una carga en el servidor provoca este error.
Establezca max_retries
para el error de solicitudes, sus causas y soluciones en Python
Antes de seguir adelante y ver cómo podemos configurar max_retries
para solicitudes en Python, abordemos primero algunos de los problemas.
- Primero, este error puede ocurrir si tu URL no es correcta. Por lo tanto, debe verificar si la URL que está solicitando es válida o no.
- Este error también puede ocurrir debido a la conexión a Internet, así que asegúrese de no tener ningún problema de este tipo.
- También recibimos este error cuando hay una sobrecarga del servidor. Cuando los servidores están ocupados, puede encontrar este tipo de error.
Ahí es donde entra en juego el fenómeno de aumentar el número de reintentos para solicitar la URL. Entonces, aprendamos cómo puedes hacer eso. Pero, primero, eche un vistazo al siguiente código.
Código de ejemplo:
import requests
# increass retries number
retries = 4 # enter the number of retires you want to increase
requests.adapters.DEFAULT_RETRIES = retries
Así es como puede aumentar la cantidad de reintentos para una solicitud de URL en Python, pero si recibe este error debido a una carga en el servidor, puede usar los siguientes consejos.
Nota: Debe instalar el módulo de
solicitudes
en su Python usando el siguiente comando:
python -m pip install requests
Consejos para deshacerse del conjunto max_retries
para solicitudes en Python
Puede usar cualquiera de los siguientes consejos si la carga en el servidor provoca este error.
-
Deshabilitar
keep_alive
Puede deshabilitar la funcionalidad
keep_alive
de la sesión. El siguiente fragmento de código explica cómo puede hacerlo.request_session = requests.session() # disable keep_alive request_session.keep_alive = False request_session.get(your_url)
-
Usar
tiempo de espera
Cuando el servidor está sobrecargado, ocupado o lejos de la ubicación, esto puede convertirse en la razón por la que recibe el mismo error. Para evitar esto, puede aumentar el tiempo de respuesta.
Puede hacerlo con las solicitudes
POST
yGET
del servidor. Por ejemplo, eche un vistazo al siguiente código.import requests # the time in seconds in this example is increasing time by 5 req = requests.get(your_url, timeout=5) req = requests.post(your_url, timeout=5)
También puedes usar la tupla en los parámetros
timeout
. El primer parámetro aumentará el tiempo de construcción y el segundo parámetro aumentará el tiempo de respuesta. El ejemplo de código se da a continuación.req = requests.get(your_url, timeout=(3, 6))
-
Establecer un
backoff_factor
(Retraso/Sueño)backoff_factor
es un argumentourllib3
utilizado por las solicitudes para configurar inicialmente una conexión de red.También puede configurar el
factor de retroceso
para aumentar el número de intentos y el tiempo de suspensión de cada intento.Evitará obtener este error. Con esto, está deteniendo la pieza de código y haciéndola esperar hasta que reciba la respuesta del servidor.
Aquí hay una ilustración de cómo
backoff_factor
puede retrasar las solicitudes de servicio cada vez que falla una.# you can set a backoff factor means delay/sleep time in each retry import requests from requests.adapters import HTTPAdapter from requests.packages.urllib3.util.retry import Retry # initailize the request session request_session = requests.Session() # initailizing retry object # you can increase the number of total retires and sleep time of each retry retries = Retry(total=3, backoff_factor=1) adapter = HTTPAdapter(max_retries=retry) request_session.mount("http://", adapter) request_session.get(your_url)
De acuerdo con la documentación de
urllib3
,backoff_factor
es un valor base que la biblioteca usa para determinar el intervalo de suspensión entre reintentos.Por ejemplo, después de cada intento fallido de conexión,
urllib3
dormirá durante{backoff_factor} * (2 (número total de reintentos - 1))
segundos.Por ejemplo,
sleep()
dormirá durante0.0s
,0.2s
,0.4s
,… entre reintentos si elbackoff_factor
está configurado en0.01
. Backoff está inactivo por defecto (establecido en0
).Si el código de estado devuelto es
500
,502
,503
o504
, solicitará adicionalmente un reintento. Para tener un control aún más preciso sobre los reintentos, puede modificar el reintento.
Haider specializes in technical writing. He has a solid background in computer science that allows him to create engaging, original, and compelling technical tutorials. In his free time, he enjoys adding new skills to his repertoire and watching Netflix.
LinkedIn