# 어제 무엇을 했나요?
- 1. 개인프로젝트 포스트 등록api 구현
- 2. 알고리즘 기초 공부
# 오늘은 무엇을 할 것인가요?
- 1. 쿼리 최적화를 제외한 중간점검 반영
- 2. 리뷰 전체 긁어오기에서 장르 처리
# 진행하는데 어려운 부분(도움이 필요한 부분)이 있나요?
__init__ 메서드에서 정의하여 설정값처럼 관리_build_prompt 등) 로 분리하여 호출| 구분 | 캐시 삭제 안 함 (Timeout만 의존) | 캐시 직접 삭제 (Task 완료 시) |
|---|---|---|
| 비유 | 화장실 쓰고 문 잠근 채로 창문으로 탈출함 (문은 5분 뒤에 자동으로 열림) | 화장실 다 쓰고 나오면서 문을 열어둠 |
| 작업 성공 시 | 작업은 3초에 끝났지만, 5분간 재요청 불가 | 작업 끝나자마자 즉시 재요청/결과 확인 가능 |
| 작업 실패 시 | 실패했는데도 계속 "처리 중"이라고 거짓말 함 | 즉시 "처리 중" 해제 -> 유저가 바로 재시도 가능 |
| 사용자 경험 | 답답함 (왜 안 되지?) | 쾌적함 (빠릿빠릿함) |
"작업이 끝났는데도 사용자가 하염없이 기다리는 상황을 막기 위해서"
| 구분 | AS-IS (기존) | TO-BE (수정 방향) | 이점 |
|---|---|---|---|
| 캐시 해제 시점 | timeout=10 (10초 후 자동 만료) | Celery Task 완료(finally) 시점에 cache.delete() 호출 | 작업 시간이 10초를 넘거나 1초 만에 끝나도, 정확한 작업 종료 시점에 상태 동기화 가능 |
| 타임아웃 역할 | 작업 종료 예상 시간 (불확실) | 비상 안전 장치 (Zombie Lock 방지용, 5분 등 넉넉히 설정) | 서버 장애 등으로 Task가 비정상 종료되어도 영원히 락이 걸리는 것 방지 |
| 데이터 검증 | API 뷰/서비스(메인 스레드)에서 수행 | Celery Task 내부로 이동 | 검증 로직이 복잡해져도 API 응답 속도(Response Time)는 항상 빠름 |
| 역할 분담 | API가 상태 추측 및 검증 혼합 | API는 트리거(Trigger), Task가 실제 처리/상태관리 | 관심사의 분리(SoC)를 통해 코드가 간결해지고 유지보수성 향상 |