Hasta ahora no pude encontrar nada realmente, pero ¿es cierto que curl
realmente no se agota el tiempo?
user@host:~# curl http://localhost/testdir/image.jpg
Lo pregunto porque estoy redirigiendo cualquier solicitud de imágenes testdir
a un módulo Apache separado que genera esas imágenes sobre la marcha. Pueden pasar hasta 15 minutos antes de que la imagen esté realmente lista y entregada al cliente solicitante.
Se curl
espere siempre (o es que según la configuración) o hay alguna especie de tiempo de espera?
Respuestas:
Si.
Parámetros de tiempo de espera
curl
tiene dos opciones:--connect-timeout
y--max-time
.Citando de la página de manual:
y:
Valores predeterminados
Aquí (en Debian) deja de intentar conectarse después de 2 minutos, independientemente del tiempo especificado
--connect-timeout
y aunque el valor predeterminado de tiempo de espera de conexión parece ser de 5 minutos según laDEFAULT_CONNECT_TIMEOUT
macro en lib / connect.h .--max-time
Parece que no existe un valor predeterminado para , haciendocurl
esperar una respuesta para siempre si la conexión inicial tiene éxito.¿Qué usar?
Usted probablemente está interesado en esta última opción,
--max-time
. Para su caso, configúrelo en900
(15 minutos).Especificar la opción
--connect-timeout
de algo como60
(un minuto) también podría ser una buena idea. Decurl
lo contrario , intentará conectarse una y otra vez, aparentemente utilizando algún algoritmo de retroceso.fuente
Hay timelimit: / usr / bin / timelimit - limita efectivamente el tiempo de ejecución absoluto de un proceso
fuente
Mejor que
--max-time
las--speed-limit
y las--speed-time
opciones. En resumen,--speed-limit
especifica la velocidad promedio mínima que está dispuesto a aceptar, y--speed-time
especifica cuánto tiempo la velocidad de transferencia puede permanecer por debajo de ese límite antes de que la transferencia se agote y se cancele.fuente
Si tiene coreutils instalados en MacOS, puede usar el comando GNU timeout que se incluye con ese paquete. Todas las herramientas de GNU tienen el prefijo a,
g
por lo que sería la CLIgtimeout
.Ejemplo
fuente
Un par de soluciones en BASH4 +
Uso de la muestra:
RECOMIENDA QUE NC se use si necesitamos un puerto específico
fuente