비동기 형식으로 코드 재수정

This commit is contained in:
김민구
2026-07-08 05:12:19 +09:00
parent 0e00a84363
commit d15a484dbf
2 changed files with 11 additions and 7 deletions
+3 -3
View File
@@ -15,12 +15,12 @@ from backend.services import game_service
router = APIRouter(prefix="/api/game", tags=["Game"])
@router.post("/death", response_model=AncestorDeathResponse)
def record_death(req: AncestorDeathCreate, db: Session = Depends(get_db)):
def record_death(req: AncestorDeathCreate, background_tasks: BackgroundTasks, db: Session = Depends(get_db)):
death_history = game_service.create_death_history(db=db, death_data=req)
# 다음 세대 대사 즉시 생성 및 캐싱 보장 (동기식 호출)
# 다음 세대 대사 백그라운드 사전 생성 (비동기 백그라운드 태스크 구동)
next_gen = death_history.generation + 1
game_service.pregenerate_npc_dialogue(db=db, next_generation=next_gen)
background_tasks.add_task(game_service.pregenerate_npc_dialogue, next_gen)
return death_history
+8 -4
View File
@@ -36,10 +36,12 @@ def create_death_history(db: Session, death_data: AncestorDeathCreate):
db.refresh(db_death)
return db_death
# 3. 문지기 NPC 조언 대사 사전 생성 (동기식 생성 및 캐싱 보장)
def pregenerate_npc_dialogue(db: Session, next_generation: int):
# 3. 문지기 NPC 조언 대사 사전 생성 (동기 백그라운드 구동)
def pregenerate_npc_dialogue(next_generation: int):
# 비동기로 돌기 때문에 직접 세션을 생성해서 처리합니다.
db = SessionLocal()
try:
print(f"[Pregen] {next_generation}대손용 문지기 대사 동기 생성 시작...")
print(f"[Pregen] {next_generation}대손용 문지기 대사 백그라운드 생성 시작...")
# 1. AI 조언 대사 생성
dialogue_text = generate_npc_dialogue(db=db, current_generation=next_generation)
@@ -60,7 +62,9 @@ def pregenerate_npc_dialogue(db: Session, next_generation: int):
print(f"[Pregen] {next_generation}대손용 대사 캐싱 완료: {dialogue_text}")
except Exception as e:
db.rollback()
print(f"[Pregen ERROR] 대사 생성 실패: {e}")
print(f"[Pregen ERROR] 대사 백그라운드 생성 실패: {e}")
finally:
db.close()
# 2. 문지기 NPC 조언 대사 생성
def generate_npc_dialogue(db: Session, current_generation: int) -> str: