Celery, 비동기 처리

moredev·2022년 11월 28일
0

python

목록 보기
3/4

Celery 실행

celery를 사용하기 위해서는 Celery의 구성 요소인 Celery Workers, Message Broker를 설치해야 한다.
Celery Workerscelery, Message Brokerredis를 설치, 사용했다.

# task.py
from celery import Celery

BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'

app = Celery('tasks', broker=BROKER_URL, backend=CELERY_RESULT_BACKEND)

@app.task()
def function_name(parameter)

app 객체를 Celery로 생성하고, @app.task()로 함수를 정의한다. task 함수는 delay 또는 apply_async 함수로 호출할 수 있다.

python3 -m celery -A task worker --loglevel=info

celery의 이름(파이썬 파일명)인 task를 -A의 인자로 넘긴다.

함수 실행

from task import function_name

result = function_name.delay(parameter)

task의 함수를 import한 후, delay함수를 사용해 celery에서 작업을 시작하도록 호출한다.

실행중인 celery task 정보 확인

task = function_name.AsyncResult(result.task_id)
print(task.state)
PENDING

delay로 호출한 함수 리턴값의 id를 사용해 현재 celery에서 진행중인 작업의 정보를 알 수 있다. 실행중인 task를 AsyncResult(id)함수를 사용해 호출한다. 반환값.id 또는 반환값.task_id로 실행중인 task의 id를 가져올 수 있다. 위에선 state (또는 status)를 사용해 작업의 진행 상태를 확인했다.
celery.result에서 task 작업 정보의 자세한 내용 참고


출처:

0개의 댓글