Limity czasu i ponowienia
Lekcja 45 z 47 w kursie Sieci komputerowe w terminalu w Coddy.
Domyślnie curl czeka bardzo długo. W skrypcie to błąd: jeden nieosiągalny host i zadanie zawiesza się, dopóki ktoś tego nie zauważy.
curl -s --max-time 5 --connect-timeout 2 URL--connect-timeout ogranicza czas na nawiązanie połączenia. --max-time ogranicza czas trwania całej operacji. Przekroczenie któregokolwiek z tych limitów powoduje zwrócenie kodu wyjścia 28.
Ponawianie prób wymaga większej ostrożności, niż mogłoby się wydawać. Ponowienie nieudanego żądania GET lub PUT jest bezpieczne, ponieważ oba są idempotentne. Ponowienie żądania POST może utworzyć drugi rekord, a przekroczenie limitu czasu to najgorszy przypadek: nie dowiesz się, czy pierwsze żądanie zostało przetworzone.
Dlatego bez obaw ponawiaj odczyty, a przed ponowieniem zapisów dobrze się zastanów. Gdy musisz je ponowić, poproś serwer o sposób, który zapewni bezpieczeństwo, na przykład klucz idempotencji.
Wyzwanie
ŚredniUstaw limit czasu dla żądania, na które nigdy nie nadejdzie odpowiedź.
Wyślij żądanie do http://10.255.255.1/, adresu, który po cichu pochłania ruch, przerwij po 2 sekundach i wypisz gave up: , a następnie kod wyjścia curl.
Oczekiwany wynik:
gave up: 28Bez limitu czasu to żądanie zawisłoby na znacznie ponad minutę.
Spróbuj swoich sił
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Sieci komputerowe w terminalu
3Porty i gniazda
Czym jest portDobrze znane portyLocalhostNasłuchiwanie a łączeniePodsumowanie: porty6curl od podstaw do zaawansowania
Wyświetlanie nagłówkówZapisywanie odpowiedziWłasne nagłówkiStatus i czasKody zakończenia curlPodsumowanie: flagi curl9Uwierzytelnianie i debugowanie
Klucze API i BearerUser AgentLimity czasu i ponowieniaAnaliza błęduPodsumowanie: debugowaniePoćwicz samodzielnie: Edytor online Terminal