-
Python CeleryPython 2022. 10. 6. 17:44
어떤 작업을 실행하고 완료까지 대략 10초정도가 걸리는 작업이 있다고 가정해보자
그 작업을 실행하고 완료되기까지 10초정도 사이트가 멈출 것이다.
그래서 비동기 작업의 필요성을 느끼고 비동기로 실행시킬 것이다.
다시 생각해보자 비동기 작업을 실행해놓고 다른 작업들을 할 수 있지만 동시에 대용량 작업을 처리하거나 무거운 연산이 포함된다면 서비스에 장애가 발생하게 될 것이다.
또한 작업마다 소요시간이 다름, 작업이 누락되지 않아야함 등 여러가지 중요한 부분들이 존재한다.
그래서 비동기 작업 큐라는 것으로 작업을 관리하고 작업자에게 제대로 전달하기 위해 중간에 브로커가 존재한다.
python에서 비동기 작업 큐를 활용할 수 있는게 celery이다.
python celery
celery 공식문서보면 실시간 처리에 중점을 두고 작업 예약을 지원하는 작업 큐라고 적혀있다.
작업예약은 celery beat라는 것으로 스케줄링 할 수 있다는 뜻이다.
celery의 구성요소는 크게 3가지이다.
- broker: task를 worker에게 전달하는 역할 (메세지)
- client: task를 생성하는 역할
- worker: task를 실행하고 처리하는 역할
celery의 특징
- 연결 유실이나 실패에 대해 자동으로 재시도한다.
- 분당 수백만 개의 작업을 처리할 수 있을정도로 빠르다.
- 확장성이 뛰어나 커스텀이 용이하다.
https://docs.celeryq.dev/en/latest/getting-started/first-steps-with-celery.html
First Steps with Celery — Celery 5.3.0b1 documentation
This document describes the current stable version of Celery (5.3). For development docs, go here. First Steps with Celery Celery is a task queue with batteries included. It’s easy to use so that you can get started without learning the full complexities
docs.celeryq.dev
'Python' 카테고리의 다른 글
Python AES256 암호화, 복호화 (0) 2022.12.22 파이썬 오버로딩과 오버라이딩 (2) 2022.11.10 [lambda x: i * x for i in range(4)] (1) 2022.11.07 Python 패키징의 역사 (0) 2022.10.12 Python getter setter property (0) 2022.09.28