공식문서의 Routing tasks를 번역했습니다.
celery에서는 사용가능한 queue를 task_queues로 세팅한다.
default_exchange = Exchange('default', type='direct')
media_exchange = Exchange('media', type='direct')
app.conf.task_queues = (
Queue('default', default_exchange, routing_key='default'),
Queue('videos', media_exchange, routing_key='media.video'),
Queue('images', media_exchange, routing_key='media.image')
)
app.conf.task_default_queue = 'default'
app.conf.task_default_exchange = 'default'
app.conf.task_default_routing_key = 'default'
task_default_queue는 명백한 루트가 지정되지 않은 태스크들을 라우팅할 때 쓰인다.
디폴트 exchange, exchange type, routing key는 태스크에 대한 디폴트 라우팅값과, task_queues에 들어가는 디폴트 값으로 쓰인다.
하나의 queue에 대한 여러개의 바인딩도 지원된다. 다음은 같은 queue에 대해 두개의 라우팅 키를 설정한 예시이다.
from kombu import Exchange, Queue, binding
media_exchange = Exchange('media', type='direct')
CELERY_QUEUES = (
Queue('media', [
binding(media_exchange, routing_key='media.video'),
binding(media_exchange, routing_key='media.image'),
]),
)