hgzero/rag/start_all.sh

48 lines
1.4 KiB
Bash

#!/bin/bash
# RAG 서비스 - API 서버와 Event Hub Consumer 동시 실행 스크립트
set -e # 에러 발생 시 스크립트 종료
echo "=========================================="
echo "RAG 서비스 시작"
echo "=========================================="
# 로그 디렉토리 생성
mkdir -p logs
# Event Hub Consumer를 백그라운드로 실행
echo "[1/2] Event Hub Consumer 시작..."
python start_consumer.py > logs/consumer.log 2>&1 &
CONSUMER_PID=$!
echo "Consumer PID: $CONSUMER_PID"
# API 서버 시작 (포그라운드)
echo "[2/2] REST API 서버 시작..."
python -m uvicorn src.api.main:app --host 0.0.0.0 --port 8000 &
API_PID=$!
echo "API Server PID: $API_PID"
# PID 파일 저장
echo $CONSUMER_PID > logs/consumer.pid
echo $API_PID > logs/api.pid
echo "=========================================="
echo "RAG 서비스 시작 완료"
echo " - API Server: http://0.0.0.0:8000"
echo " - Consumer PID: $CONSUMER_PID"
echo " - API PID: $API_PID"
echo "=========================================="
# 종료 시그널 처리 (graceful shutdown)
trap "echo 'Shutting down...'; kill $CONSUMER_PID $API_PID; exit 0" SIGTERM SIGINT
# 두 프로세스 모두 실행 중인지 모니터링
while kill -0 $CONSUMER_PID 2>/dev/null && kill -0 $API_PID 2>/dev/null; do
sleep 5
done
# 하나라도 종료되면 모두 종료
echo "One of the processes stopped. Shutting down all..."
kill $CONSUMER_PID $API_PID 2>/dev/null || true
wait