Establezca el tiempo de espera para la respuesta de la página web con curl

15

Utilizo una herramienta para monitorear si la página web está funcionando.

La herramienta utiliza el curlcomando internamente para obtener la salida.

Sin embargo, cuando una página web tarda más en responder, se devuelve un TIMEOUTerror. No hay forma de que pueda aumentar el tiempo de espera de la herramienta.

¿Hay alguna forma de establecer / modificar el período de tiempo de espera para una respuesta de una página web?

¿Hay alguna variable que se pueda modificar?

usuario80040
fuente

Respuestas:

23

Puedes usar la -mopción:

-m, --max-time <seconds>
              Maximum time in seconds that you allow the  whole  operation  to
              take.   This is useful for preventing your batch jobs from hang‐
              ing for hours due to slow networks or  links  going  down.   See
              also the --connect-timeout option.

              If this option is used several times, the last one will be used.

Esto incluye tiempo para conectarse, si desea especificarlo por separado, use la --connect-timeoutopción.

Cuonglm
fuente
4

Normalmente lo haría con una opción en la línea de comando cuando curlse invoca. Pero como no puede cambiar esto, hay otra forma: puede crear un archivo de configuración para curl. En Unix, curlprimero buscará en el directorio de inicio del usuario que ejecuta curl un archivo llamado .curlrc. Crea ese archivo con la línea

connect-timeout = 10

para reducir el tiempo de espera a 10 segundos. O puede establecer un tiempo máximo para toda la operación, con la opción max-time:

max-time = 10
Jenny D
fuente
Esa es una gran idea ... pero también me preguntaba si hay alguna variable de entorno particular para eso o algo que se pueda configurar desde el backend como ulimit para aumentar el conteo de FD.
user80040
No puedo encontrar algo así en la página del manual.
Jenny D
4

curl tiene una opción de "tiempo de espera de conexión":

--connect-timeout <seconds>

Si su "herramienta" es un script, puede editarlo manualmente allí. Pero /unix//a/148926/77959 es aún mejor: ¡edite la configuración curl!

Flowtron
fuente
Ya ... agregar la configuración es más bien una idea brillante ... pero también me preguntaba, si hay alguna variable env particular para eso o algo que se pueda configurar desde el backend como ulimit para aumentar el conteo de FD.
user80040
@ user80040 No, no lo hay. No hay "back-end", el tiempo de espera no es algún tipo de limitación del sistema. Curl realiza la solicitud web y decide agotar el tiempo en función de su configuración.
Gilles 'SO- deja de ser malvado'
0

Desde Curlpuede usar esta opción --connect-timeout: Tiempo máximo en segundos que permite que tome la conexión al servidor. Esto solo limita la fase de conexión, una vez que se curlha conectado esta opción ya no sirve. Ver también la --max-timeopción.

Thushi
fuente