Celery와 PostgreSQL를 이용한 비동기 데이터베이스 처리

소개

데이터베이스 처리 작업은 종종 시간이 오래 걸릴 수 있습니다. 이러한 작업을 동기적으로 처리하면 사용자는 응답을 기다리는 동안 대기해야 합니다. 이런 상황에서 비동기 처리를 이용하면 응답 시간을 단축시킬 수 있습니다.

Celery는 파이썬 기반의 분산 작업 큐 프레임워크로, 비동기 작업을 처리하는 데 사용됩니다. 이 글에서는 Celery와 PostgreSQL을 함께 사용하여 비동기 데이터베이스 처리를 구현하는 방법에 대해 알아보겠습니다.

Celery 설치

먼저 Celery를 설치해야 합니다. pip를 이용하여 아래 명령어를 실행하세요.

pip install celery

PostgreSQL 설정

다음으로, PostgreSQL 데이터베이스에 연결하는 설정을 추가해야 합니다. settings.py 파일에 아래 코드를 추가하세요.

CELERY_BROKER_URL = 'postgre://localhost:5432'

비동기 작업 정의

Celery는 작업을 정의하는데 사용되는 task decorator를 제공합니다. 비동기로 실행될 함수에 해당 decorator를 추가하세요. 아래는 예시입니다.

from celery import Celery

app = Celery('myapp', broker='postgre://localhost:5432')

@app.task
def process_data(data):
    # 비동기로 처리될 작업
    return processed_data

비동기 작업 실행

이제 Celery에 작업을 등록하고 실행할 준비가 되었습니다. 아래 명령어를 실행하여 Celery worker를 실행하세요.

celery -A myapp worker --loglevel=info

그 후, 다음 코드를 사용하여 작업을 전송할 수 있습니다.

from myapp import process_data

result = process_data.delay(data)

결과 확인

비동기 작업은 백그라운드에서 실행되므로 결과를 즉시 확인할 수는 없습니다. Celery worker가 작업을 처리하고 완료될 때까지 기다려야 합니다. 작업이 완료되면 결과를 얻을 수 있습니다.

print(result.get())

결론

Celery와 PostgreSQL을 함께 사용하면 비동기 데이터베이스 처리를 구현할 수 있습니다. 이를 통해 사용자 경험을 향상시키고 응답 시간을 단축할 수 있습니다. 또한, Celery의 다양한 기능과 설정을 통해 더 복잡한 비동기 처리 작업도 수행할 수 있습니다.

자세한 내용은 Celery 공식 문서를 참고하시기 바랍니다.

#Celery #PostgreSQL