비동기 형식으로 코드 재수정
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user