비동기 형식으로 코드 재수정
This commit is contained in:
@@ -15,12 +15,12 @@ from backend.services import game_service
|
|||||||
router = APIRouter(prefix="/api/game", tags=["Game"])
|
router = APIRouter(prefix="/api/game", tags=["Game"])
|
||||||
|
|
||||||
@router.post("/death", response_model=AncestorDeathResponse)
|
@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)
|
death_history = game_service.create_death_history(db=db, death_data=req)
|
||||||
|
|
||||||
# 다음 세대 대사 즉시 생성 및 캐싱 보장 (동기식 호출)
|
# 다음 세대 대사 백그라운드 사전 생성 (비동기 백그라운드 태스크 구동)
|
||||||
next_gen = death_history.generation + 1
|
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
|
return death_history
|
||||||
|
|
||||||
|
|||||||
@@ -36,10 +36,12 @@ def create_death_history(db: Session, death_data: AncestorDeathCreate):
|
|||||||
db.refresh(db_death)
|
db.refresh(db_death)
|
||||||
return db_death
|
return db_death
|
||||||
|
|
||||||
# 3. 문지기 NPC 조언 대사 사전 생성 (동기식 생성 및 캐싱 보장)
|
# 3. 문지기 NPC 조언 대사 사전 생성 (비동기 백그라운드 구동)
|
||||||
def pregenerate_npc_dialogue(db: Session, next_generation: int):
|
def pregenerate_npc_dialogue(next_generation: int):
|
||||||
|
# 비동기로 돌기 때문에 직접 세션을 생성해서 처리합니다.
|
||||||
|
db = SessionLocal()
|
||||||
try:
|
try:
|
||||||
print(f"[Pregen] {next_generation}대손용 문지기 대사 동기 생성 시작...")
|
print(f"[Pregen] {next_generation}대손용 문지기 대사 백그라운드 생성 시작...")
|
||||||
|
|
||||||
# 1. AI 조언 대사 생성
|
# 1. AI 조언 대사 생성
|
||||||
dialogue_text = generate_npc_dialogue(db=db, current_generation=next_generation)
|
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}")
|
print(f"[Pregen] {next_generation}대손용 대사 캐싱 완료: {dialogue_text}")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
db.rollback()
|
db.rollback()
|
||||||
print(f"[Pregen ERROR] 대사 생성 실패: {e}")
|
print(f"[Pregen ERROR] 대사 백그라운드 생성 실패: {e}")
|
||||||
|
finally:
|
||||||
|
db.close()
|
||||||
|
|
||||||
# 2. 문지기 NPC 조언 대사 생성
|
# 2. 문지기 NPC 조언 대사 생성
|
||||||
def generate_npc_dialogue(db: Session, current_generation: int) -> str:
|
def generate_npc_dialogue(db: Session, current_generation: int) -> str:
|
||||||
|
|||||||
Reference in New Issue
Block a user