Délais d’attente et nouvelles tentatives
Leçon 45 sur 47 du cours Réseautage avec le terminal de Coddy.
Par défaut, curl attend très longtemps. Dans un script, c’est un problème : un hôte inaccessible et votre tâche reste bloquée jusqu’à ce que quelqu’un s’en aperçoive.
curl -s --max-time 5 --connect-timeout 2 URL--connect-timeout limite le temps consacré à l’établissement de la connexion. --max-time limite la durée de l’opération entière. Le dépassement de l’une ou l’autre de ces limites renvoie le code de sortie 28.
Les nouvelles tentatives demandent plus de précautions qu’il n’y paraît. Répéter une requête GET ou PUT ayant échoué est sûr, car toutes deux sont idempotentes. Répéter une requête POST peut créer un second enregistrement, et un délai d’expiration est le pire cas : vous ne saurez jamais si la première requête a été traitée.
Retentez donc librement les lectures, mais réfléchissez avant de retenter les écritures. Lorsque c’est nécessaire, demandez au serveur un moyen de rendre l’opération sûre, comme une clé d’idempotence.
Défi
MoyenImposez une limite à une requête qui ne recevra jamais de réponse.
Effectuez une requête vers http://10.255.255.1/, une adresse qui absorbe silencieusement le trafic, abandonnez après 2 secondes, et affichez gave up: suivi du code de sortie de curl.
Sortie attendue :
gave up: 28Sans délai d’attente, cette requête resterait bloquée bien plus d’une minute.
Essayez vous-même
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Réseautage avec le terminal
1Comment les réseaux communiquent
Qu’est-ce qu’un réseauClients et serveursAdresses IPVotre première requête2Noms et DNS
Pourquoi les noms existentLe fichier hostsRechercher un nomTypes d’enregistrementsRécapitulatif : les noms3Ports et sockets
Qu’est-ce qu’un portPorts bien connusLocalhostÉcoute ou connexionRécapitulatif : les ports6curl en profondeur
Afficher les en-têtesEnregistrer les réponsesEn-têtes personnalisésStatut et duréeCodes de sortie de curlRécapitulatif : options de curl9Authentification et débogage
Clés API et BearerL’agent utilisateurDélais d’attente et nouvelles tentativesLire un échecRécapitulatif : débogageEntraînez-vous par vous-même : Playground Terminal