Menu
Coddy logo textTech

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.

challenge icon

Défi

Moyen

Imposez 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: 28

Sans délai d’attente, cette requête resterait bloquée bien plus d’une minute.

Essayez vous-même

Terminal
quiz iconTestez-vous

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

Entraînez-vous par vous-même : Playground Terminal