Nginx 502 오류는 5xx (서버 오류) 서버가 유효한 요청을 처리하는 데 실패했다.
는 의미를 갖는 오류입니다.
4xx 번의 오류가 발생한 경우에는 system service 들이 정상동작을 하고 있는지 확인을 하는 것으로 대부분 해결 되었고, 5xx 는 조금 더 깊이있는 연구를 필요로 합니다. 이때에는 service 들은 모두 정상적으로 동작을 하고 있는 상황에서 개별 service 의 상태 log값을 확인하여 문제가 되는 부분을 수정해 주는 것으로 대부분 해결 가능하였습니다.
Django 서비스 에서는 여러개의 서비스가 물려있는데 Python (Django) -> Celery -> Flower
순서대로 운영상태와 개별 log 값에서 출력하고 있는 문제점이 있는지 단계적으로 확인 하였습니다.
두번째 Celery
의 log 에는 오류가 없어서 시스템 상태값을 확인하였고 다음과 같은 오류를 출력하고 있었습니다.
$ sudo systemctl status celery
● celery.service - CeleryService
Loaded: loaded (/etc/systemd/system/celery.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-01-01 15:12:07 KST; 4s ago
Main PID: 2449 (celery)
Tasks: 5 (limit: 9198)
Memory: 181.5M
CPU: 4.327s
CGroup: /system.slice/celery.service
└─2449 /home/username/Source/.venv/bin/python3.11
/home/username/Source/.venv/bin/celery -A mysite worker -l info -P threads
1월 1 15:12:12 server celery[2449]: from datago import info_krx as info_datago_krx
1월 1 15:12:12 server celery[2449]: ModuleNotFoundError: No module named 'datarun'
서비스를 실행할 때에 필요한 datarun
라는 모듈이 설치가 되지 았아서 문제가 발생한 것이었습니다. 해당 모듈은 Django
서비스의 운영과 배표에는 관여하지 있지않고 Celery
작업과만 연결되어 있어서 위와같은 상황이 벌어진 것이었습니다.
참고사이트
- DigitalOcean에 Django 프로젝트 배포
- systemctl 명령어로 서비스 등록, 생성, 삭제
- systemd unit 등록 관련 옵션 정리 - Linux
- How to Monitor and Debug Celery Tasks in Python
- flower - reverse proxy
- Celery 무작정 시작하기 (5) - Monitoring
- Flower Github
- Document
- Celery Flower Security
- Configuring Celery + Redis + Supervisor with Django
- Configure Celery + Supervisor With Django