-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrun_all_workers.sh
More file actions
executable file
·101 lines (84 loc) · 3.01 KB
/
run_all_workers.sh
File metadata and controls
executable file
·101 lines (84 loc) · 3.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#!/bin/bash
# ====================================================
# EconoEasy All Workers 실행 스크립트
# (Article + Recommend + Keyword Worker 동시 실행)
# ====================================================
echo "==================================="
echo "EconoEasy All Workers 시작"
echo "==================================="
echo ""
# 현재 스크립트 디렉토리 기준으로 이동
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$SCRIPT_DIR"
# 1️⃣ .env 파일 확인
if [ ! -f .env ]; then
echo "❌ 오류: .env 파일이 없습니다."
echo " .env.example을 복사하여 .env 파일을 생성하고 설정을 입력하세요."
echo " $ cp .env.example .env"
exit 1
fi
echo "✓ 환경 변수 파일 확인 완료"
# 2️⃣ Python 가상환경 확인 및 생성
if [ ! -d "venv" ]; then
echo "⚙️ 가상환경(venv) 생성 중..."
python3 -m venv venv
if [ $? -ne 0 ]; then
echo "❌ Python 가상환경 생성 실패. Python3이 설치되어 있는지 확인하세요."
exit 1
fi
fi
echo "✓ 가상환경 활성화 중..."
source venv/bin/activate
# 3️⃣ 의존성 확인 및 자동 설치
echo "✓ Python 의존성 확인 중..."
cd econoeasy
python -c "import redis, motor, fastapi, langchain_google_genai" 2>/dev/null
if [ $? -ne 0 ]; then
echo "⚙️ 필수 패키지 설치 중..."
pip install --upgrade pip
pip install -r requirements.txt
if [ $? -ne 0 ]; then
echo "❌ 의존성 설치 실패. requirements.txt를 확인하세요."
deactivate
exit 1
fi
fi
echo "✓ 모든 의존성 확인 완료"
echo ""
echo "세 워커를 시작합니다..."
echo " - Article Worker (기사 요약)"
echo " - Recommend Worker (영상 추천)"
echo " - Keyword Worker (키워드 추출)"
echo "종료하려면 Ctrl+C를 누르세요."
echo ""
# 4️⃣ 워커 실행 (백그라운드)
# Signal 핸들러 설정
cleanup() {
echo ""
echo "워커 종료 중..."
kill $ARTICLE_WORKER_PID $RECOMMEND_WORKER_PID $KEYWORD_WORKER_PID 2>/dev/null
wait $ARTICLE_WORKER_PID $RECOMMEND_WORKER_PID $KEYWORD_WORKER_PID 2>/dev/null
echo "모든 워커가 종료되었습니다."
exit 0
}
trap cleanup SIGINT SIGTERM
# Article Worker 백그라운드 실행
echo "📄 Article Worker 시작 중..."
python -m app.services.queue.worker &
ARTICLE_WORKER_PID=$!
# Recommend Worker 백그라운드 실행
echo "🎬 Recommend Worker 시작 중..."
python -m app.services.recommend_queue.worker &
RECOMMEND_WORKER_PID=$!
# Keyword Worker 백그라운드 실행
echo "🔑 Keyword Worker 시작 중..."
python -m app.services.keyword_queue.worker &
KEYWORD_WORKER_PID=$!
echo ""
echo "✓ 세 워커가 모두 실행되었습니다."
echo " - Article Worker PID: $ARTICLE_WORKER_PID"
echo " - Recommend Worker PID: $RECOMMEND_WORKER_PID"
echo " - Keyword Worker PID: $KEYWORD_WORKER_PID"
echo ""
# 워커들이 종료될 때까지 대기
wait $ARTICLE_WORKER_PID $RECOMMEND_WORKER_PID $KEYWORD_WORKER_PID