느린 구독자가 생중계를 멈췄다 · 확인·기한·회수의 주인을 정한다 · 퀴즈
퀴즈: 확인·기한·회수의 주인을 정한다
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
전체 1초 중 drain에 0.8초를 썼다면 ACK 예산은?
- 다시 1초를 부여한다
- 대략 0.2초가 남는다
- 이미 0.8초라 즉시 성공한다
- ACK에는 시간 상한을 두지 않는다
Cursor(last=7)에 9가 먼저 들어오면?
- last를 9로 바꾸고 중복으로 본다
- 7과 9의 평균을 체크포인트로 쓴다
- Gap을 내고 last는 7로 유지한다
- 8이 처리됐다고 가정하고 승인한다
Cursor.accept가 True인 직후 실제 업무가 실패하면?
- 메모리 커서가 자동으로 이전 값으로 돌아간다
- TCP가 실패한 업무만 다시 실행한다
- 영속 저장이 없어도 정확히 한 번이 성립한다
- 커서만 전진해 재시도가 중복으로 보일 수 있다
serve_queue가 빈 큐에서 취소될 때 필요한 것은?
- 소유 연결을 닫고 취소를 호출자에게 전달한다
- 항목이 올 때까지 취소를 무시하며 기다린다
- 항목을 받지 않았어도 task_done을 호출한다
- writer는 남기고 정상 종료로만 보고한다
write와 drain이 끝났지만 ACK가 오지 않으면?
- 업무가 성공했으므로 즉시 완료로 반환한다
- 전체 기한 안에서 업무 확인을 계속 기다린다
- 다른 순번의 ACK를 받으면 동일 성공으로 본다
- 기한을 매번 새로 늘려 연결을 계속 유지한다
활성 연결이 있는 Python 3.12 서버의 종료 순서는?
- wait_closed 뒤에 모든 클라이언트를 닫는다
- 리스너를 남겨 두고 작업자만 재생성한다
- 새 연결을 막고 기존 연결을 닫은 뒤 기다린다
- 가비지 컬렉션이 끝날 때까지 새 요청을 받는다