본문 바로가기
카테고리 없음

Python Celery 분산 작업 자업 큐?

by Byeong 2024. 11. 17.

Celery

Celery가 뭐야?

 

비동기 작업 처리작업 스케줄링을 지원하는 작업 큐(Task Queue)이다.

 

작업 큐(Task Queue)? 

 작업을 비동기적으로 처리하기 위해 요청을 대기열에 저장하고, 이를 워커가 순차적으로 처리하는 시스템이다.
주로 대규모 작업 분산 처리와 백그라운드 실행을 통해 애플리케이션 성능을 최적화하는 데 사용된다.

 

1. 비동지 작업 처리

  • 사용자가 요청한 작업을 즉시 처리하지 않고 백그라운드에서 된다.
  • 시간이 오래 걸리는 작업을 효율적으로 분리하여 애플리케이션의 응답 속도를 개선한다.

 

2. 작업 스케줄링

  • 특정 작업을 주기적으로 실행하거나 예약된 시간에 실행할 수 있도록 관리한다.

 

비동기 작업에는 시간이 오래 걸리는 '이메일 발송', '데이터 분석' 등에 사용하며

작업 스케줄링은 주기적으로 작동해야 하는 '매일 데이터 백업', '주기적 이메일' 등에 사용한다. 


Celery 동작 구조 

 

 사용자가 웹에서 작업을 요청하면, 작업은 브로커를 통해 Celery로 전달한다. Celery는 워커를 통해 작업을 처리하고, 결과를 완료 후 반환한다.

 

Message Broker

 메세지 브로커는 작업을 큐에 저장하여, Celery 워커가 이를 순차적으로 처리하도록 합니다. 브로커는 작업 큐에서 대기 중인 작업을 관리합니다. 주로 RabbitMQ, Redis, Amazons SQS 등을 사용한다. 

 

 


참고 문헌

https://docs.celeryq.dev/en/latest/index.html

https://tiaz.dev/Celery/1