FastAPI와 Celery를 사용하여 비동기 작업 처리하기

FastAPI Celery

FastAPI는 Python으로 개발된 빠르고 현대적인 웹 프레임워크입니다. Celery는 Python으로 작성된 분산 작업 큐 시스템으로, 비동기 작업을 처리하는 데 사용됩니다. FastAPI와 Celery를 함께 사용하면 웹 애플리케이션에서 비동기 작업을 효율적으로 처리할 수 있습니다.

FastAPI와 Celery 설정

먼저, FastAPI와 Celery를 설치해야 합니다. 다음 명령어를 사용하여 필요한 패키지를 설치합니다.

pip install fastapi[all] celery[redis]

FastAPI는 웹 애플리케이션을 작성하기 위한 기능을 제공하고, Celery는 비동기 작업을 처리하기 위한 기능을 제공합니다. Celery는 Redis를 사용하여 작업을 관리하기 때문에, Redis도 설치되어 있어야 합니다.

FastAPI 애플리케이션 작성

FastAPI와 Celery를 함께 사용하려면, FastAPI 애플리케이션에서 Celery 인스턴스를 설정해야 합니다. 다음은 간단한 예제를 보여주는 FastAPI 애플리케이션 코드입니다.

from fastapi import FastAPI
from celery import Celery

app = FastAPI()
celery = Celery('tasks', broker='redis://localhost:6379/0')

@celery.task
def process_task(task_id):
    # 비동기로 실행할 작업 내용을 여기에 작성합니다.
    ...

@app.post('/task/{task_id}')
async def create_task(task_id: int):
    # 작업을 Celery 큐에 전송합니다.
    process_task.delay(task_id)
    return {'message': f'Task {task_id} created.'}

위의 코드에서 process_task 함수는 Celery 태스크로 정의되어 있습니다. 이 함수는 비동기로 실행되며, 실제로 처리해야 하는 작업 내용을 작성하는 부분입니다. create_task 함수는 FastAPI 엔드포인트로, 클라이언트가 POST 요청을 보내면 Celery 큐에 작업을 전송합니다.

Celery Worker 실행

작업을 처리하기 위해 Celery 워커를 실행해야 합니다. 다음 명령어를 사용하여 워커를 실행합니다.

celery -A main worker -l info

위의 명령어에서 main은 FastAPI 애플리케이션의 이름을 나타냅니다. 이 명령어를 실행하면 Celery 워커가 작업 큐를 모니터링하고, 새 작업이 추가되면 해당 작업을 처리합니다.

요약

FastAPI와 Celery를 함께 사용하면 비동기 작업을 웹 애플리케이션에서 효율적으로 처리할 수 있습니다. FastAPI 애플리케이션에서 Celery 인스턴스를 설정하고, Celery 태스크를 작성하여 비동기 작업을 처리할 수 있습니다. Celery 워커를 실행하여 작업 큐를 처리할 수 있습니다. 이러한 조합은 웹 애플리케이션의 응답 시간을 최적화하고, 사용자 경험을 향상시킬 수 있습니다.

#FastAPI #Celery