FastAPI — 타입이 곧 계약이다 · 계약과 수명 · 퀴즈
FastAPI 확인
문항 8개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
`async def` 핸들러 안에서 `time.sleep(1)` 을 하면?
- 그 요청만 1초 늦는다
- FastAPI 가 자동으로 스레드로 옮긴다
- 예외가 난다
- 서버 전체가 1초 동안 다른 요청을 처리하지 못한다
같은 코드를 `def`(동기)로 선언하면 무엇이 달라지나?
- FastAPI 가 스레드풀로 보내 준다
- 선언 방식만 다르고 동작은 같다
- 스레드 전환 때문에 더 느려진다
- 요청 본문 타입 검사가 꺼진다
스키마에 맞지 않는 본문이 오면 FastAPI 가 주는 상태 코드는?
- 400 Bad Request
- 500 Internal Server Error
- 422 Unprocessable Entity
- 409 Conflict
`response_model` 의 가장 실무적인 효과는?
- 직렬화를 건너뛰어 응답이 빨라진다
- 정의되지 않은 필드는 응답에서 빠진다
- 요청 본문을 같은 모델로 검증한다
- 응답을 자동으로 캐시해 준다
`Depends` 로 만든 의존성이 테스트에서 갖는 이점은?
- 프로덕션 코드를 안 고치고 갈아 끼운다
- 테스트 실행이 더 빨라진다
- 자동으로 목(mock)이 생긴다
- 핸들러의 타입 힌트가 느슨해진다
`BackgroundTasks` 에 대한 올바른 설명은?
- Celery 같은 분산 작업 큐다
- 응답 후 같은 프로세스에서 실행된다
- 별도 워커 컨테이너에서 실행된다
- 실패하면 자동으로 재시도한다
`uvicorn --workers 4` 로 띄웠을 때 주의할 점은?
- CPU 를 항상 네 배로 쓴다
- 포트를 4개 열어 줘야 한다
- async 핸들러가 동기로 바뀐다
- 프로세스가 4개라 전역 변수를 공유하지 않는다
시작할 때 커넥션 풀을 여는 요즘 방식은?
- @app.on_event("startup")
- 모듈 최상단에서 그냥 연다
- lifespan 컨텍스트 매니저
- 미들웨어의 첫 요청에서 연다