Définir le délai d'expiration de la réponse de la page Web avec curl

15

J'utilise un outil pour contrôler si la page Web est opérationnelle.

L'outil utilise la curlcommande en interne pour récupérer la sortie.

Cependant, lorsqu'une page Web met plus de temps à répondre, elle renvoie une TIMEOUTerreur. Il n'y a aucun moyen d'augmenter le délai d'expiration de l'outil.

Existe-t-il un moyen de définir / modifier le délai d'expiration d'une réponse à partir d'une page Web?

Y a-t-il une variable qui peut être modifiée?

user80040
la source

Réponses:

23

Vous pouvez utiliser l' -moption:

-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.

Cela inclut le temps de se connecter, si vous souhaitez le spécifier séparément, utilisez l' --connect-timeoutoption.

cuonglm
la source
4

Normalement, vous le feriez avec une option sur la ligne de commande lorsque curlest invoqué. Mais comme vous ne pouvez pas changer cela, il existe une autre façon - vous pouvez créer un fichier de configuration pour curl. Sous unix, curlrecherchera d'abord dans le répertoire personnel de l'utilisateur qui exécute curl un fichier appelé .curlrc. Créez ce fichier avec la ligne

connect-timeout = 10

pour réduire le délai à 10 secondes. Ou vous pouvez définir une durée maximale pour toute l'opération, avec l'option max-time:

max-time = 10
Jenny D
la source
C'est une excellente idée ... mais je me demandais également s'il y avait une variable env particulière pour cela ou quelque chose qui peut être défini depuis le backend comme ulimit pour augmenter le nombre de FD?
user80040
Je ne trouve rien de tel dans la page de manuel.
Jenny D
4

curl a une option "timeout de connexion":

--connect-timeout <seconds>

Si votre "outil" est un script, vous pouvez le modifier manuellement. Mais /unix//a/148926/77959 est encore mieux - éditez la curl-config!

flowtron
la source
Ya..ajouter la config est plutôt une idée brillante..mais je me demandais également s'il y avait une variable env particulière pour cela ou quelque chose qui peut être défini depuis le backend comme ulimit pour augmenter le nombre de FD?
user80040
@ user80040 Non, il n'y en a pas. Il n'y a pas de «backend», le délai d'attente n'est pas une sorte de limitation du système. Curl effectue la requête Web et décide de temporiser en fonction de sa configuration.
Gilles 'SO- arrête d'être méchant'
0

De, Curlvous pouvez utiliser cette option --connect-timeout: Durée maximale en secondes pendant laquelle vous autorisez la connexion au serveur. Cela ne limite que la phase de connexion, une fois curlconnecté, cette option n'est plus utile. Voir aussi l' --max-timeoption.

Thushi
la source