Celery 요약

이도현·2023년 11월 2일
0

호기심 천국

목록 보기
9/13
post-custom-banner

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의 비동기 작업처리를 위한 도구
  • 큰 큐모의 작업 처리, 분산 시스템 구축, 주기적 작업 스케줄링 등 다양한 상황에서 매력적인 해결 책 제공
profile
좋은 지식 나누어요
post-custom-banner

0개의 댓글