Tiempos de espera y reintentos
Lección 45 de 47 del curso Redes con la terminal de Coddy.
De forma predeterminada, curl espera durante mucho tiempo. En un script, eso es un error: un host inaccesible y tu tarea se queda bloqueada hasta que alguien se da cuenta.
curl -s --max-time 5 --connect-timeout 2 URL--connect-timeout limita cuánto tiempo se dedica a establecer la conexión. --max-time limita la operación completa. Superar cualquiera de los dos produce el código de salida 28.
Reintentar requiere más cuidado de lo que parece. Repetir un GET o un PUT fallido es seguro, porque ambos son idempotentes. Repetir un POST puede crear un segundo registro, y un tiempo de espera agotado es el peor caso: nunca supiste si el primero se procesó.
Así que reintenta las lecturas sin problema y piénsalo antes de reintentar las escrituras. Cuando sea necesario, pídele al servidor una forma de hacerlo de manera segura, como una clave de idempotencia.
Desafío
IntermedioEstablece un límite para una solicitud que nunca recibirá respuesta.
Solicita http://10.255.255.1/, una dirección que absorbe el tráfico silenciosamente, abandona después de 2 segundos e imprime gave up: seguido del código de salida de curl.
Salida esperada:
gave up: 28Sin un tiempo de espera, esta solicitud se quedaría bloqueada durante mucho más de un minuto.
Pruébalo tú mismo
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Redes con la terminal
2Nombres y DNS
Por qué existen los nombresEl archivo hostsBuscar un nombreTipos de registrosRepaso: nombres6curl a fondo
Ver los encabezadosGuardar respuestasEncabezados personalizadosEstado y tiemposCódigos de salida de curlRepaso: opciones de curl9Autenticación y depuración
Claves API y BearerEl agente de usuarioTiempos de espera y reintentosLeer un falloRepaso: depuraciónPractica por tu cuenta: Playground de Terminal