ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 셀러리(Celery)
    Python/Today 2025. 9. 5. 13:20

    1. 셀러리란?

    • 비동기 작업 처리(Asynchronous Task Processing)분산 처리(Distributed Task Queue) 를 위한 파이썬 라이브러리
    • 웹 서버에서 오래 걸리는 작업을 백그라운드로 넘겨 실행하게 함
    • 즉, 웹 서버는 빠르게 응답하고, 무거운 작업은 다른 워커가 대신 처리

    2. 셀러리의 핵심 구성 요소

     

    구성 요소 설명
    Producer 작업을 생성하고 Broker에 전달 웹 서버(Flask, Django 등)
    Task 실행할 작업(함수) 이메일 전송, 이미지 처리
    Broker 작업을 저장하고 전달하는 메시지 큐 Redis, RabbitMQ
    Worker Broker에서 Task를 가져와 실행 celery -A tasks worker
    Result Backend 작업 실행 결과를 저장하는 저장소 Redis, DB, Memcached

    3. 동작 구조

    1. 사용자가 웹 서버에 요청 (예: "회원가입 완료 메일 보내기")
    2. 서버는 메일 전송 작업을 Task 로 만들어 Broker(Redis 등)에 전달
    3. 대기 중이던 Worker 가 Broker에서 작업을 꺼냄
    4. Worker가 작업을 실행 (메일 전송 완료)
    5. 결과가 필요하다면 Result Backend 에 저장

     

    4. 주요 장점 & 단점

    구분 내용
    ✅ 장점 - 웹 서버 부담 감소 (비동기 처리)
    - 여러 서버에서 동시에 작업 처리 가능 (확장성)
    - 스케줄링 가능 (정해진 시간마다 실행)
    - 대규모 데이터 처리에 유용
    ❌ 단점 - Redis/RabbitMQ 같은 외부 인프라 필요
    - 셋업과 운영 복잡도 증가
    - 작은 프로젝트에서는 오버엔지니어링 될 수 있음

    'Python > Today' 카테고리의 다른 글

    타입 힌트(Tpye Hint)  (0) 2025.09.03
    @inject  (0) 2025.08.27
    Alembic  (0) 2025.08.26
    Mapped  (0) 2025.08.25
    SQLAlchemy 1.3 vs 2.0 차이점  (0) 2025.08.25
Designed by Tistory.