MainTransServer/~/work/worker-system
AGX 078b3258f9 메인서버와 워커 시스템 분리
- 메인서버: 클라이언트 요청 중계만 담당
- 워커 시스템: 별도 디렉토리로 분리 (~work/worker-system)
- Docker Compose에서 celery worker 제거
- 태스크 전송을 외부 워커로 변경 (worker.translate_task 등)
- 작업 상태 확인 API 추가 (/task_status/{task_id})
- 워커 자동화 스크립트 및 Docker 설정 포함
2025-07-17 10:31:39 +09:00
..
Dockerfile 메인서버와 워커 시스템 분리 2025-07-17 10:31:39 +09:00
README.md 메인서버와 워커 시스템 분리 2025-07-17 10:31:39 +09:00
app 메인서버와 워커 시스템 분리 2025-07-17 10:31:39 +09:00
docker-compose.yml 메인서버와 워커 시스템 분리 2025-07-17 10:31:39 +09:00
start_worker.sh 메인서버와 워커 시스템 분리 2025-07-17 10:31:39 +09:00
worker.py 메인서버와 워커 시스템 분리 2025-07-17 10:31:39 +09:00

README.md

이미지 처리 워커 시스템

메인서버와 분리된 독립적인 이미지 처리 워커 시스템입니다.

🏗️ 아키텍처

클라이언트 → 메인서버 (FastAPI) → Redis → 워커 시스템 (ImageProcessor)
  • 메인서버: 클라이언트 요청 중계, 인증, API 제공
  • 워커: 실제 OCR, 번역, 인페인팅 작업 처리
  • Redis: 작업 큐 및 결과 저장소

🚀 실행 방법

1. Docker 모드 (권장)

cd ~/work/worker-system
WORKER_MODE=docker ./start_worker.sh

2. 로컬 모드

cd ~/work/worker-system
WORKER_MODE=local ./start_worker.sh

3. 원격 모드

cd ~/work/worker-system
REDIS_URL="redis://메인서버IP:6379/0" WORKER_MODE=remote ./start_worker.sh

⚙️ 환경 변수

변수 설명 기본값
REDIS_URL Redis 서버 주소 redis://localhost:6379/0
MAIN_SERVER_HOST 메인 서버 주소 localhost
CONCURRENCY 동시 처리 작업 수 2
WORKER_MODE 실행 모드 docker

📋 사용 예시

로컬에서 실행

# 기본 설정으로 실행
./start_worker.sh

# 동시 처리 수 조정
CONCURRENCY=4 ./start_worker.sh

# 원격 메인서버에 연결
REDIS_URL="redis://192.168.1.100:6379/0" MAIN_SERVER_HOST="192.168.1.100" ./start_worker.sh

원격 서버에서 실행

# 원격 서버에 워커 시스템 배포
scp -r ~/work/worker-system user@remote-server:~/

# 원격 서버에서 실행
ssh user@remote-server
cd ~/worker-system
REDIS_URL="redis://메인서버IP:6379/0" WORKER_MODE=docker ./start_worker.sh

🔧 개발 모드

직접 실행

python worker.py --concurrency 2 --redis-url redis://localhost:6379/0

특정 큐만 처리

python worker.py --concurrency 1 --redis-url redis://localhost:6379/0

📊 모니터링

Flower를 통해 워커 상태를 모니터링할 수 있습니다:

🔄 자동 재시작

systemd를 사용한 자동 재시작 설정:

# /etc/systemd/system/image-worker.service
[Unit]
Description=Image Processing Worker
After=docker.service

[Service]
Type=forking
User=ckh08045
WorkingDirectory=/home/ckh08045/work/worker-system
Environment=WORKER_MODE=docker
Environment=REDIS_URL=redis://localhost:6379/0
ExecStart=/home/ckh08045/work/worker-system/start_worker.sh
Restart=always

[Install]
WantedBy=multi-user.target
sudo systemctl enable image-worker
sudo systemctl start image-worker

🐛 문제 해결

Redis 연결 오류

  • 메인서버의 Redis가 실행 중인지 확인
  • 포트 6379가 열려있는지 확인
  • 방화벽 설정 확인

Docker 권한 오류

sudo usermod -aG docker $USER
newgrp docker

의존성 오류

pip install -r requirements.txt