celery를 사용하기 위해서는 Celery의 구성 요소인 Celery Workers
, Message Broker
를 설치해야 한다.
Celery Workers
로 celery
, Message Broker
로 redis
를 설치, 사용했다.
# 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에서 작업을 시작하도록 호출한다.
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 작업 정보의 자세한 내용 참고
출처: