Celery는 파이썬으로 작성된 분산 작업 큐 시스템입니다. 큐에서 작업을 처리하는 동안, 우선순위가 높은 작업을 처리할 수 있다면 전반적인 성능을 향상시킬 수 있습니다. 이번 블로그 포스트에서는 Celery를 사용하여 큐에서 높은 우선순위 작업을 처리하는 방법에 대해 알아보겠습니다.
작업 우선순위 설정하기
Celery에서 작업을 처리하는 우선순위는 task_priority
라는 속성을 사용하여 설정할 수 있습니다. 작업을 생성할 때 해당 속성을 설정하면 됩니다.
from celery import Celery
app = Celery('myapp', broker='redis://localhost:6379/0')
@app.task
def process_task(task_id):
# 작업 처리 코드
high_priority_task = process_task.apply_async(args=(task_id,), priority=9)
위의 코드에서 priority
매개변수를 9로 설정하여 우선순위를 높게 설정했습니다. 큐에서 작업을 처리할 때 이 값을 참조하여 우선순위 순서대로 처리됩니다.
높은 우선순위 작업 먼저 처리하기
Celery에서 우선순위가 높은 작업을 먼저 처리하려면 다음과 같은 방법을 사용할 수 있습니다.
-
큐에서 작업 가져오기 전에 우선순위 기준으로 정렬하기
Celery는
TaskConsumer
라는 클래스를 사용하여 작업을 가져올 수 있습니다.TaskConsumer
클래스의consume_from
메서드를 사용할 때,sortqueues
옵션을 사용하여 우선순위에 따라 큐를 정렬할 수 있습니다.from celery.app.task_consumer import TaskConsumer consumer = TaskConsumer(app=app) consumer.consume_from( queues=['queue1', 'queue2'], # 큐를 우선순위 순서대로 정렬합니다. sortqueues=True, )
이렇게 큐를 우선순위에 따라 정렬하면, 우선순위가 높은 작업부터 처리됩니다.
-
작업 처리하는 워커 수 조정하기
Celery는 작업을 병렬로 처리하는 워커(worker)를 사용합니다. 큐에서 작업을 가져오는 워커의 수를 조정하여 우선순위가 높은 작업을 먼저 처리할 수 있습니다. 워커의 수는 Celery 설정 파일에서
CELERYD_CONCURRENCY
옵션을 설정하여 변경할 수 있습니다.# celery.py CELERYD_CONCURRENCY = 10
위의 설정에서 워커의 수를
10
으로 설정하면, 동시에 10개의 작업을 처리할 수 있습니다. 이렇게 워커의 수를 늘리면 우선순위가 높은 작업들이 더 빠르게 처리될 수 있습니다.
높은 우선순위의 작업을 큐에서 처리하는 방법에 대해 알아보았습니다. Celery는 대규모 작업 처리에 최적화된 도구로, 큐에서 작업을 처리할 때 우선순위를 잘 지정하면 더 효율적인 작업 처리가 가능합니다.
더 자세한 내용은 Celery 공식 문서를 참고하시기 바랍니다.