0. 서론
대규모 웹 애플리케이션을 운영할 때, 효율적인 작업 처리는 성공의 열쇠중 하나이다. Celery는 python 기반의 애플리케이션에서 비동기 작업 처리를 위한 강력한 도구이다. 무엇인지 알아보자
1. Celery란?
- Python으로 작성된 분산 작업 큐 시스템
- 이를 사용하여 애플리케이션의 비동기 작업을 관리하고, 큐에 작업을 보내고, 다른 프로세스나 서버에서 실행할 수 있음.
- 특히 오래 걸리는 작업, 에를 들어 이메일 전송이나 대규모 데이터 처리 등을 백그라운드에서 처리하는데 유용
2. 주요 특징
- 비동기 작업처리: 메인 플로우와 분리하여 작업을 비동기적으로 처리. 이를 통해 사용자 경험으 개선하고 애플리케이션의 성능을 높임
- 분산 처리 지원: 여러 서버에 걸쳐 작업을 분산시킬수 있음
- 다양한 메시지 브로커 지원: RabbitMQ, Redis등 다양한 메시지 브로커를 지원.
- 주기적 작업 스케줄링: Celery Beat를 사용하여 주기적으로 반복되는 작업을 스케줄링
3. 기본 사용법
- pip install celery
- task 정의
from celery import Celery
app = Celery('my_app', broker='pyamqp://guest@localhost//')
@app.task
def my_periodic_task():
print("Task is running...")
app.conf.beat_schedule = {
'run-every-10-seconds': {
'task': 'my_app.my_periodic_task',
'schedule': 10.0,
},
}
- celery -A my_app worker --loglevel=info(워커 실행)
- celery -A my_app beat(비트 실행 별도로 실행)
- 다양한 옵션을 제공하여 고급 설정가능
- 예를 들어 작업의 시간 제한, 다양한 콜백 추가
@app.task(bind=True, time_limit=30)
def my_task(self, x, y):
...
4. 결론
- celery은 python의 비동기 작업처리를 위한 도구
- 큰 큐모의 작업 처리, 분산 시스템 구축, 주기적 작업 스케줄링 등 다양한 상황에서 매력적인 해결 책 제공