|
|
||
|---|---|---|
| ImageTransWorker | ||
| docker_root | ||
| modules | ||
| re | ||
| .gitignore | ||
| Dockerfile | ||
| ITServer.log | ||
| MST_P2M_simp.onnx | ||
| README.md | ||
| README_WORKER.md | ||
| REMOTE_SETUP.md | ||
| docker-compose.yml | ||
| hawp_simp.onnx | ||
| iop_start.sh | ||
| lib64 | ||
| main.py | ||
| paddlepaddle_gpu-2.4.2-cp38-cp38-linux_aarch64.whl | ||
| pyvenv.cfg | ||
| requirements.txt | ||
| requirements_no_paddle.txt | ||
| start_worker.sh | ||
| test_image.png | ||
| test_remote_connection.py | ||
| test_worker_client.py | ||
| worker.py | ||
| worker_backup.py | ||
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를 통해 워커 상태를 모니터링할 수 있습니다:
- 메인서버의 Flower: http://메인서버:5555
🔄 자동 재시작
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