2020/01/10 - [Back-end/Python] - [Celery] 무작정 시작하기 (1) - 설치 및 실행
2020/01/17 - [Back-end/Python] - [Celery] 무작정 시작하기 (2) - Task
2020/01/20 - [Back-end/Python] - [Celery] 무작정 시작하기 (3) - Chain
2020/01/20 - [Back-end/Python] - [Celery] 무장적 시장하기 (4) - Group과 Chord
지금까지 Celery에서 Task를 사용하는 예제들을 다루면서 실행 상태를 확인 할 때 Celery Log만 봤었다. 크롤링에 Task를 사용하면서 수행시간이 긴 Task를 확인하고 중단 할 필요가 생겼다. 당연히 Log에서는 처리할 수 없는 부분들이었다. 그래서 찾아보니 특정 명령어를 입력해서 처리 할 수도 있었다. 그러나, 명령어를 매번 입력하여 처리하는게 꽤나 번거로웠다. 그래서 Celery를 Monitoring하고 관리할 수 있는 Tool을 찾아보았는데, 공식문서에서 두 개의 Monitoring Tool을 지원한다는 것을 확인하였다. 그래서 이번 포스트에서는 이 Tool들을 직접 사용하면서 정리한 내용들을 다룰계획이다.
이 포스트는 Windows 10 기반으로 작성되었습니다.
1. Monitoring Tool 종류.
1-1. Celery Events.
- curses를 이용한 Monitoring Tool.
- 작업의 결과와 추적 검사 수, 속도 제한 및 작업자의 종료 등의 관리 명령도 지원.
- 단순히 개념 증명용으로 만들어진 것으로 Flower를 사용하는 것을 권장.
- TUI 특성상 화면이 텍스트로만 구성되어 있고 키보드로만 조작할 수 있어서 매우 불편함.
- Uinx계열 OS를 사용하면 별도의 설치없이 Celery를 실행할 때 [ -E ]옵션을 주면 사용할 수 있음.
- Windows에서는 curses를 지원하지 않기 때문에 별도의 설치가 필요함.
- 더 자세한 내용은 공식 문서 참조.
* curses는 Unix계열 OS의 터미널 제어 라이브러리로, 텍스트 사용자 인터페이스(TUI) 응용 프로그램을 구성할 수 있음.
1-2. Flower.
- Web 기반의 실시간 Monitoring 및 관리 Tool.
- 아직 개발중이지만 필수 Tool로 자리잡고 있음.
- 작업자 상태 및 통계보기, 작업자 인스턴스 종료 및 다시 시작 등 Web을 통해 Celery를 관리할 수 있음.
- Web뿐만아니라 API를 지원하여 좀 더 세부적으로 Celery를 관리할 수 있음.
- 더 자세한 내용은 공식 문서 참조.
2. Celery Events.
2-1. 설치.
- Unix 계열의 OS를 사용한다면 설치할 필요없음.
> pip install windows-curses
2-2. 실행.
> celery -A [APP_NAME] events
> celery -A dochi_app events
2-3. 실행 화면.
2-4. Task를 실행한 후 화면.
- UUID, WORKER, TASK, TIME, STATE를 확인할 수 있음.
- STATE에서 Task의 상태를 확인할 수 있음.
* [ RECEIVED ]: 요청받은 Task를 Queue에 적재한 상태.
* [ STARTED ]: Task를 Queue에서 가져와서 실행한 상태.
* [ SUCCESS ]: Task가 완료된 상태.
* [ FAILED ]: Task가 실패한 상태.
- 화면 하단에 [ Keys ]에 입력 가능한 키를 확인할 수 있음.
* [ j ]: 커서 Down.
* [ k ]: 커서 Up.
* [ i ]: 상세화면.
* [ t ]: 역추적.
* [ r ]: 결과화면.
* [ ^c ]: 종료.
* 확인결과 Windows에서 [ t, r, ^c ]를 사용하면 반응이 없음.
2-5. 상세화면.
2-6. 결과화면.
3. Flower.
3-1. 설치.
> pip install flower
3-2. 실행.
- 여러가지 실행방법이 있으나, 가장 기본적인 방법만 소개.
> celery [ -A APP_NAME ] flower [ Options ]
> celery -A dochi_app flower --address=localhost --port=5555
3-2. 실행 확인.
3-3. Flower Web 접속.
- [ http://localhost:5555 ]로 접속
4. Flower 탭별 확인.
4-1. [ Dashboard ]탭.
- 시작화면으로 모든 Worker의 상태를 실시간으로 확인할 수 있음.
- [ Active ]: 현재 수행중인 Task의 수.
- [ Processed ]: 수행한 모든 Task의 수.
- [ Failed ]: 수행에 실패한 Task의 수.
- [ Succeeded ]: 수행에 성공한 Task의 수.
- [ Retried ]: 재수행 중인 Task의 수.
- Worker의 목록.
4-2. [ Tasks ] 탭.
- Celery Events보다 디테일한 Task 정보들을 확인할 수 있음.
- [ UUID ]를 클릭하면 상세 정보를 확인 할 수 있으며 완료되기 전이라면 중단시킬 수 있음.
- [ Worker ]를 클릭하면 해당 Task를 처리하는 Worker에 대한 정보를 확인 할 수 있음.
- 실시간으로 확인할 수가 없어서 계속 Refresh 해주어야함.
4-3. [ Broker ] 탭.
- Queue에 대한 정보를 확인할 수 있음.
- [ Messages ]: 받은 Tasks의 수.
- [ Unacked ]: Celery가 Message를 받았는지에 대한 응답 건수.
- [ Ready ]: 대기중인 Message의 수.
- [ Consumers ]: Queues에 접속해있는 Worker의 수.
- [ Idle since ]: 마지막으로 집계된 시간.
4-4. [ Monitor ] 탭.
- Task의 수행 상태, 시간, Queue에 적재된 Tasks의 수를 그래프로 확인 할 수 있음.
5. Flower HTTP API.
5-1. Worker 목록 조회.
- GET http://localhost:5555/api/workers
5-2. Task 목록 조회.
- GET http://localhost:5555/api/tasks
5-3. 이 기능은 다룰게 많아서 공식 문서를 직접 보고 필요한 것만 사용하는 것을 추천.
6. 마치며.
- Monitoring Tool을 쓰면서 지금까지 Celery Log만 확인했던 내 자신을 반성하게 되었다. 이렇게 시각화가 잘 되어 있는 Tool이 있었을 줄은 몰랐다. 앞으로는 새로운 프로그램을 사용하면 Monitoring Tool이 있는지 먼저 확인해봐야겠다.
- API 관련 내용은
- 그리고, 이렇게 또 하나의 Web을 띄울게 생겼으니 Docker에 올려서 사용해야겠다.
'Back-end > Python' 카테고리의 다른 글
[Telegram] 무작정 시작하기 (2) - CommandHandler (0) | 2020.01.30 |
---|---|
[Telegram] 무작정 시작하기 (1) - 설치 및 실행 (0) | 2020.01.30 |
[크롤링] 직방에서 방찾기 (2) - Crawler (0) | 2020.01.21 |
[크롤링] 직방에서 방찾기 (1) - 데이터 분석 (2) | 2020.01.21 |
[Celery] 무장적 시장하기 (4) - Group과 Chord (0) | 2020.01.20 |
댓글