FastAPI와 Celery를 사용하여 백그라운드 작업 스케줄링하기
소개
FastAPI와 Celery는 둘 다 파이썬으로 작성된 매우 인기있는 오픈소스 라이브러리입니다. FastAPI는 빠르고 현대적인 웹 애플리케이션 프레임워크로, 풍부한 기능과 빠른 실행 속도를 특징으로 합니다. Celery는 분산 작업 큐 및 작업 스케줄링을 제공하는 비동기 작업 큐 시스템으로, 비동기적으로 실행되는 백그라운드 작업을 쉽게 제어할 수 있습니다.
이 블로그 포스트에서는 FastAPI와 Celery를 함께 사용하여 백그라운드 작업을 스케줄링하는 방법을 알아보겠습니다.
준비물
- Python 3.7 이상
- FastAPI 및 Celery 라이브러리 설치
pip install fastapi
pip install celery
스텝 1: FastAPI 애플리케이션 작성하기
내부적으로 FastAPI는 ASGI 애플리케이션으로 작동하므로 main.py
파일을 만들고 다음과 같이 작성합니다.
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
스텝 2: Celery 작업 정의하기
Celery 작업은 별도의 파일 tasks.py
에 정의됩니다. 여기에는 백그라운드에서 실행되는 작업을 포함합니다.
from celery import Celery
# Celery 인스턴스 생성
app = Celery('tasks', broker='pyamqp://guest@localhost//')
# 작업 정의
@app.task
def add(x, y):
return x + y
스텝 3: FastAPI에서 Celery 작업 실행하기
FastAPI 애플리케이션에서 Celery 작업을 실행하려면 main.py
파일에 코드를 추가해야 합니다.
from fastapi import FastAPI
from tasks import add
app = FastAPI()
@app.get("/")
def read_root():
# Celery 작업 실행
result = add.delay(4, 6)
return {"task_id": result.task_id}
스텝 4: Celery 작업 스케줄링하기
Celery는 작업을 특정 시간 또는 주기적으로 실행할 수 있습니다. 이를 위해 tasks.py
파일의 작업 정의를 수정해야 합니다.
from celery import Celery
from datetime import timedelta
# Celery 인스턴스 생성
app = Celery('tasks', broker='pyamqp://guest@localhost//')
# 작업 정의
@app.task
def add(x, y):
return x + y
# 작업 스케줄링
app.conf.beat_schedule = {
'add-every-30-seconds': {
'task': 'tasks.add',
'schedule': timedelta(seconds=30),
'args': (1, 2)
},
}
마무리
이제 FastAPI와 Celery를 사용하여 백그라운드 작업을 스케줄링하는 방법을 알게 되었습니다. 이 기술은 빠른 웹 애플리케이션과 비동기 작업 처리의 조합으로 매우 강력하며, 대규모 애플리케이션에서 유용합니다. FastAPI와 Celery의 강력한 기능을 통해 애플리케이션의 성능과 확장성을 크게 향상시킬 수 있습니다.
#FastAPI #Celery