Timeout e tentativi
Lezione 45 di 47 del corso Reti da terminale di Coddy.
Per impostazione predefinita, curl aspetta molto a lungo. In uno script è un bug: basta un host irraggiungibile perché il tuo processo rimanga bloccato finché qualcuno non se ne accorge.
curl -s --max-time 5 --connect-timeout 2 URL--connect-timeout limita il tempo da dedicare alla connessione. --max-time limita la durata dell'intera operazione. Il superamento di uno dei due limiti restituisce il codice di uscita 28.
Ritentare richiede più attenzione di quanto sembri. Ripetere una richiesta GET o PUT non comporta rischi, perché entrambe sono idempotenti. Ripetere una richiesta POST potrebbe creare un secondo record, e un timeout è il caso peggiore: non hai mai saputo se la prima richiesta è stata elaborata.
Quindi riprova liberamente a leggere e rifletti prima di riprovare a scrivere. Quando è necessario, chiedi al server un modo per rendere l'operazione sicura, ad esempio una chiave di idempotenza.
Sfida
MedioImposta un limite di tempo per una richiesta a cui non verrà mai risposto.
Effettua una richiesta a http://10.255.255.1/, un indirizzo che inghiotte il traffico senza rispondere, interrompendola dopo 2 secondi, e stampa gave up: seguito dal codice di uscita di curl.
Output previsto:
gave up: 28Senza un timeout, questa richiesta resterebbe in attesa per ben più di un minuto.
Provalo tu
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Reti da terminale
6curl in dettaglio
Visualizzare le intestazioniSalvare le risposteIntestazioni personalizzateStato e tempiCodici di uscita di curlRiepilogo: opzioni di curl9Autenticazione e debugging
Chiavi API e BearerL’agente utenteTimeout e tentativiAnalizzare un erroreRiepilogo: debuggingEsercitati da solo: Playground Terminal