티스토리 뷰

 

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