[python] Celery task의 비동기 처리 방법은 어떻게 되는가?

Celery는 Python으로 작성된 분산 작업 큐 시스템입니다. 이를 통해 비동기적으로 작업을 실행할 수 있습니다. Celery를 사용하여 비동기 처리를 하는 방법에 대해 알아보겠습니다.

Celery 설치

기본적으로 Celery를 사용하기 위해서는 Celery를 설치해야 합니다. 아래의 명령어를 실행하여 Celery를 설치할 수 있습니다.

pip install celery

테스크 생성

Celery에서 비동기적으로 실행할 작업을 테스크라고 부릅니다. 아래는 예시 테스크의 코드입니다.

from celery import Celery

app = Celery('example', broker='pyamqp://guest@localhost//')

@app.task
def add(x, y):
    return x + y

위의 코드에서 app.task 데코레이터로 감싸진 add 함수는 Celery 테스크로 취급됩니다.

Celery 워커 실행

Celery 워커는 테스크를 비동기적으로 실행하는 프로세스입니다. 아래의 명령어를 실행하여 Celery 워커를 실행할 수 있습니다.

celery -A example worker --loglevel=info

위의 명령어에서 example은 Celery 애플리케이션의 모듈을 가리킵니다. --loglevel=info는 로그 레벨을 지정하는 옵션으로, 필요에 따라 변경할 수 있습니다.

테스크 실행

Celery의 테스크를 실행하려면 apply_async 메서드를 사용하면 됩니다. 아래의 코드에서는 add 테스크를 실행하고 결과를 얻는 예시입니다.

from example import add

result = add.apply_async(args=(4, 5))

print(result.get())

위의 코드에서 apply_async 메서드는 비동기적으로 add 테스크를 실행합니다. args 매개변수를 사용하여 테스크에 전달할 인수를 지정할 수 있습니다. result.get()은 테스크의 실행 결과를 얻기 위해 사용됩니다.

요약

이렇게 Celery를 사용하여 Python에서 비동기적 작업을 처리할 수 있습니다. Celery를 설치하고 테스크를 생성한 후, Celery 워커를 실행해야 하며, 실행할 테스크에는 apply_async 메서드를 사용하여 비동기적으로 실행할 수 있습니다.