타임아웃과 재시도
Coddy의 터미널로 네트워킹 배우기 코스 레슨. 47개 중 45번째.
기본적으로 curl은 매우 오랫동안 기다립니다. 스크립트에서는 이것이 버그입니다. 연결할 수 없는 호스트 하나 때문에 누군가 알아차릴 때까지 작업이 멈춰 있을 수 있습니다.
curl -s --max-time 5 --connect-timeout 2 URL--connect-timeout은 연결을 설정하는 데 사용할 수 있는 시간을 제한합니다. --max-time은 전체 작업에 걸리는 시간을 제한합니다. 둘 중 하나를 초과하면 종료 코드 28이 반환됩니다.
재시도는 겉보기보다 더 신중하게 처리해야 합니다. 실패한 GET 또는 PUT을 반복하는 것은 안전합니다. 둘 다 멱등적이기 때문입니다. POST를 반복하면 두 번째 레코드가 생성될 수 있으며, 타임아웃이 발생하는 경우가 가장 위험합니다. 첫 번째 요청이 처리되었는지 알 수 없기 때문입니다.
그러므로 읽기는 자유롭게 재시도하되, 쓰기를 재시도하기 전에는 생각하세요. 재시도해야 한다면 멱등성 키와 같이 안전하게 처리할 방법을 서버에 요청하세요.
챌린지
중급절대로 응답되지 않을 요청에 제한 시간을 설정하세요.
트래픽을 조용히 삼켜 버리는 주소인 http://10.255.255.1/을 요청하고, 2초 후 포기한 다음 gave up: 뒤에 curl의 종료 코드를 출력하세요.
예상 출력:
gave up: 28시간 제한이 없으면 이 요청은 1분을 훨씬 넘게 멈춰 있을 것입니다.
직접 해보기
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
터미널로 네트워킹 배우기의 모든 레슨
직접 연습해 보세요: Terminal 플레이그라운드