티스토리 뷰
Web/Django
[Django] Asynchronous Task 처리하는 방법 (ft-Celery, RabbitMQ, Redis)
angelatto 2021. 12. 16. 14:58
API를 개발하다 보면 비동기적으로 처리해야 하는 무거운 로직을 개발해야 할 순간이 발생한다.
이때 비동기 처리 프로세스를 정리해보려고 한다.
<프로세스>
1) 장고 어플리케이션에서 비동기적으로 일을 처리해야 할 때 일단 프론트에 응답(큐 적재 성공 시 200, 적재 실패 시 500)하고,
(진짜 결과를 응답하는게 아님, 진짜 로직을 처리한 결과는 Redis에 저장)
RabbitMQ에 메세지(비동기task를 가리키는)를 적재한다.
2) Celery Worker는 같은 메세지큐를 바라보게 해서 메세지 가져오고 진짜 task를 수행한다.
3) Worker가 task 수행한 후에 결과를 Redis 서버에 저장한다.
<명령어 정리>
1.RabbitMQ 서버 띄우기
✔️rabbitmq-server
2. Redis 실행 및 중단
✔️brew services start redis
✔️brew services stop redis
✔️brew services restart redis
3. Redis 키값 조회 및 삭제
✔️redis-cli
✔️set key value
✔️get key
✔️flashall : 모든 키 삭제
✔️keys * : 모든 키 조회
4. celery worker 실행
✔️ celery -A $(celery 인스턴스 생성한 모듈이 존재하는 위치) worker --loglevel=info
'Web > Django' 카테고리의 다른 글
[Django] Django(웹어플리케이션, 개발자가 작성한 코드)는 어떻게 클라이언트의 요청을 처리할 수 있을까? (0) | 2021.12.03 |
---|
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- method와 function
- 사용자정의예외클래스
- @functools.lru_cache
- ES6
- 메이븐 저장소
- 객체지향개념
- 자바스레드
- 인스턴스멤버
- jdk
- @functools.singledispatch
- java
- 자바스크립트Promise
- jre
- 정적멤버
- nunjucks
- 생성자필드메소드
- 클래스와객체
- 익명자식객체
- 자바빌드도구
- @functools.wraps
- nodejs
- sequelize.fn
- es6모듈
- os
- yarn start
- Git
- 백준2206 파이썬 풀이
- dynamic-project
- 백준
- 자바스크립트Call-back
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함