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: un host irraggiungibile e il processo resta 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 l’intera operazione. Superare uno dei due limiti restituisce il codice di uscita 28.
Riprovare richiede più attenzione di quanto sembri. Ripetere una richiesta GET o PUT non comporta rischi, perché entrambe sono idempotenti. Ripetere una richiesta POST può creare un secondo record, e un timeout è il caso peggiore: non hai mai saputo se la prima richiesta è stata elaborata.
Quindi riprova liberamente le letture e pensaci bene prima di riprovare le scritture. Se devi farlo, chiedi al server un modo per renderlo sicuro, 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