Celery로 비동기 PDF 생성하기

이번 포스트에서는 Celery를 사용하여 비동기적으로 PDF를 생성하는 방법에 대해 알아보겠습니다.

목차

Celery란 무엇인가요?

Celery는 파이썬으로 작성된 분산 작업 큐/태스크 대기열 시스템입니다. Celery를 사용하면 많은 양의 작업을 비동기적으로 처리할 수 있습니다.

Celery 설치

Celery를 설치하기 위해서는 pip를 사용합니다. 다음 명령어를 실행하여 Celery를 설치합니다.

pip install celery

PDF 생성 작업 분리

PDF 생성 작업을 분리하기 위해 별도의 함수를 작성합니다. 이 함수는 Celery 프로젝트의 작업자(worker)에서 실행됩니다. 예를 들어, 다음과 같은 코드로 PDF를 생성하는 작업을 분리해볼 수 있습니다.

from reportlab.pdfgen import canvas

def generate_pdf(filename):
    c = canvas.Canvas(filename)
    c.drawString(100, 750, "Hello, World!")
    c.save()

Celery로 비동기 처리 설정

Celery를 사용하여 비동기적으로 PDF 생성 작업을 처리하려면 Celery 프로젝트와 작업자(worker)를 설정해야 합니다. Celery 프로젝트의 tasks.py 파일에 다음과 같은 코드를 추가합니다.

from celery import Celery

app = Celery('pdf_generator', broker='redis://localhost:6379/0')

@app.task(name='pdf_generator.generate_pdf')
def generate_pdf(filename):
    # PDF 생성 작업을 수행하는 코드

Celery 실행

Celery 작업자(worker)를 실행하기 위해 다음 명령어를 실행합니다.

celery -A pdf_generator worker --loglevel=info

Celery 작업자(worker)가 실행되면, PDF 생성 작업을 호출할 수 있습니다.

from pdf_generator import generate_pdf

generate_pdf.delay('example.pdf')

결론

이제 Celery를 사용하여 비동기적으로 PDF 생성 작업을 처리할 수 있습니다. Celery는 파이썬에서 대규모 작업을 효율적으로 처리할 수 있는 강력한 도구입니다. 추가적인 설정이나 기능에 대해서는 Celery 공식 문서를 참고하시기 바랍니다.

#tags: Celery, 비동기 프로그래밍