Zaman Aşımları ve Yeniden Denemeler
Coddy'nin Terminal ile Ağ İletişimi kursunda ders 45 / 47.
Varsayılan olarak curl çok uzun süre bekler. Bir betikte bu bir hatadır: erişilemeyen tek bir sunucu, biri fark edene kadar işinizin takılı kalmasına neden olur.
curl -s --max-time 5 --connect-timeout 2 URL--connect-timeout, bağlantı kurmak için harcanacak süreyi sınırlar. --max-time, işlemin tamamı için harcanacak süreyi sınırlar. Bu sürelerden herhangi birinin aşılması, çıkış kodu 28 değerini verir.
Yeniden deneme, göründüğünden daha fazla dikkat gerektirir. Başarısız bir GET veya PUT isteğini yinelemek güvenlidir, çünkü ikisi de idempotenttir. Bir POST isteğini yinelemek ikinci bir kayıt oluşturabilir ve zaman aşımı en kötü durumdur: ilk isteğin işlenip işlenmediğini asla öğrenemezsiniz.
Bu yüzden okuma isteklerini rahatça yeniden deneyin, yazma isteklerini yeniden denemeden önce düşünün. Bunu yapmak zorundaysanız, sunucudan idempotency anahtarı gibi, işlemi güvenli hâle getirmenin bir yolunu isteyin.
Görev
OrtaAsla yanıtlanmayacak bir isteğe süre sınırı koyun.
Trafiği sessizce yutan bir adres olan http://10.255.255.1/ adresine istek gönderin, 2 saniye sonra vazgeçin ve ardından curl'ün çıkış koduyla birlikte gave up: yazdırın.
Beklenen çıktı:
gave up: 28Zaman aşımı olmadan bu istek bir dakikadan çok daha uzun süre takılı kalırdı.
Kendin dene
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Terminal ile Ağ İletişimi bölümündeki tüm dersler
6curl'u Derinlemesine İnceleme
Başlıkları GörüntülemeYanıtları KaydetmeÖzel BaşlıklarDurum ve Zamanlamacurl Çıkış KodlarıTekrar: curl Bayrakları9Kimlik Doğrulama ve Hata Ayıklama
API Anahtarları ve BearerUser AgentZaman Aşımları ve Yeniden DenemelerBir Hatanın OkunmasıTekrar: Hata AyıklamaKendi başına pratik yap: Terminal playground