LabHub
배우기 러닝패스 코스

실패했는데 종료 코드는 0 이었다 · 재시도가 두 번째 장애를 만들었다 · 퀴즈

퀴즈: 타임아웃·재시도·멱등성

LabHub 에서 이어서 보기

문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.

  1. subprocess.run(cmd, timeout=30) 에서 30초가 지나면 문서가 보장하는 동작은?

    1. 자식은 계속 돌고 TimeoutExpired 만 던진다
    2. 자식을 죽이고 기다린 뒤 TimeoutExpired 를 던진다
    3. 종료 코드 124 의 CompletedProcess 를 돌려준다
    4. 자식에게 SIGTERM 을 보내고 즉시 돌아온다
  2. 잘못된 인자로 종료 코드 2 를 낸 명령을 지수 백오프로 세 번 재시도했다. 결과는?

    1. 백오프 덕분에 두 번째 시도부터 통과한다
    2. 세 번째 시도에서 인자가 자동으로 고쳐진다
    3. 세 번 모두 같은 이유로 실패하고 시간만 흐른다
    4. 재시도 중 종료 코드가 1 로 바뀌어 통과한다
  3. 표식(marker) 파일을 명령 실행 전에 만들었다. 명령이 실패하면 무슨 일이 생기는가?

    1. 다음 실행이 표식을 보고 이미 적용됐다고 믿어 건너뛴다
    2. flock 이 표식을 감지해 잠금을 거부한다
    3. 명령이 실패했으므로 파이썬이 표식을 자동으로 지운다
    4. 다음 실행이 표식을 덮어쓰며 명령을 두 번 실행한다
  4. fcntl.flock(fd, LOCK_EX | LOCK_NB) 가 잠금을 못 잡았을 때 문서가 말하는 동작은?

    1. 잠금이 풀릴 때까지 무한정 기다렸다가 잡는다
    2. 잠금을 못 잡았다는 뜻으로 False 를 돌려준다
    3. errno 가 EACCES 또는 EAGAIN 인 OSError 를 던진다
    4. 잠금 파일을 지우고 처음부터 다시 시도한다
  5. SIGTERM 처리기가 없는 파이썬 실행기가 자식 명령을 돌리는 중에 SIGTERM 을 받았다. 무엇이 남는가?

    1. 자식도 같은 신호를 받아 함께 끝난다
    2. 실행기만 죽고 자식은 고아가 되어 계속 돈다
    3. 자식이 먼저 끝난 뒤 실행기가 143 으로 끝난다
    4. 커널이 자식을 좀비로 바꾸고 실행기는 계속 돈다
  6. 실행기가 시도마다 JSON 한 줄(attempt·rc·duration_ms)을 남기는 가장 큰 이유는?

    1. JSON 이 없으면 subprocess 가 종료 코드를 잃기 때문이다
    2. 표식 파일 대신 JSON 로그로 멱등성을 판정하기 때문이다
    3. cron 이 JSON 로그를 읽어 재시도 횟수를 정하기 때문이다
    4. 몇 번째 시도에서 성공했는지가 남아야 매번 실패하는 명령을 알 수 있기 때문이다