Menu
CoddyTech

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 wisi, 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ęcej uwagi, 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 najgorszym przypadkiem jest tutaj przekroczenie limitu czasu: nie dowiesz się, czy pierwsze żądanie zostało przetworzone.

Odczyty można więc ponawiać bez obaw, a przed ponowieniem zapisu warto się zastanowić. Gdy trzeba, poproś serwer o sposób na zapewnienie bezpieczeństwa, na przykład klucz idempotencji.

challenge icon

Wyzwanie

Średni

Ustaw 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: 28

Bez limitu czasu to żądanie zawisłoby na znacznie ponad minutę.

Spróbuj swoich sił

Terminal
quiz iconSprawdź 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

Poćwicz samodzielnie: Edytor online Terminal