Timeouts und Wiederholungen
Lektion 45 von 47 im Kurs Netzwerken mit dem Terminal von Coddy.
Standardmäßig wartet curl sehr lange. In einem Skript ist das ein Fehler: Ein nicht erreichbarer Host lässt deinen Auftrag hängen, bis es jemand bemerkt.
curl -s --max-time 5 --connect-timeout 2 URL--connect-timeout begrenzt, wie lange für den Verbindungsaufbau aufgewendet wird. --max-time begrenzt den gesamten Vorgang. Wird einer der beiden Werte überschritten, wird der Exit-Code 28 zurückgegeben.
Wiederholungen erfordern mehr Umsicht, als es zunächst scheint. Das Wiederholen eines fehlgeschlagenen GET oder PUT ist sicher, da beide idempotent sind. Das Wiederholen eines POST kann einen zweiten Datensatz erstellen, und ein Timeout ist dabei der schlimmste Fall: Du erfährst nie, ob der erste Vorgang verarbeitet wurde.
Wiederhole Lesevorgänge also unbesorgt, und denke nach, bevor du Schreibvorgänge wiederholst. Wenn es nötig ist, bitte den Server um eine Möglichkeit, dies sicher zu machen, etwa einen Idempotenzschlüssel.
Aufgabe
MittelSetze ein Zeitlimit für eine Anfrage, die niemals beantwortet wird.
Fordere http://10.255.255.1/ an, eine Adresse, die den Datenverkehr stillschweigend verschluckt, nach 2 Sekunden aufgegeben wird, und gib gave up: gefolgt vom Exit-Code von curl aus.
Erwartete Ausgabe:
gave up: 28Ohne ein Zeitlimit würde diese Anfrage weit über eine Minute hängen.
Probier es selbst
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Netzwerken mit dem Terminal
2Namen und DNS
Warum Namen existierenDie Hosts-DateiEinen Namen nachschlagenRecord-TypenRückblick: Namen6curl im Detail
Header anzeigenAntworten speichernBenutzerdefinierte HeaderStatus und Zeitmessungcurl-Exit-CodesRückblick: curl-Flags9Authentifizierung und Debugging
API-Schlüssel und BearerDer User-AgentTimeouts und WiederholungenEinen Fehler lesenRückblick: DebuggingÜbe selbstständig: Terminal-Playground