셀웨어 docs을 따라 내 dev 컴퓨터에 2 개의 대기열을 정의했습니다.로컬 호스트의 장고/셀러리 다중 대기열 - 작동하지 않는 라우팅
내 셀러리 설정 :
CELERY_ALWAYS_EAGER = True
CELERY_TASK_RESULT_EXPIRES = 60 # 1 mins
CELERYD_CONCURRENCY = 2
CELERYD_MAX_TASKS_PER_CHILD = 4
CELERYD_PREFETCH_MULTIPLIER = 1
CELERY_CREATE_MISSING_QUEUES = True
CELERY_QUEUES = (
Queue('default', Exchange('default'), routing_key='default'),
Queue('feeds', Exchange('feeds'), routing_key='arena.social.tasks.#'),
)
CELERY_ROUTES = {
'arena.social.tasks.Update': {
'queue': 'fs_feeds',
},
}
내가 내 프로젝트의 VIRTUALENV에 두 개의 터미널 창을 오픈하고, 다음 명령을 실행 :
terminal_1$ celery -A arena worker -Q default -B -l debug --purge -n deafult_worker
terminal_2$ celery -A arena worker -Q feeds -B -l debug --purge -n feeds_worker
내가 뭘 얻을 모든 작업이 처리되고 있다는 것입니다 두 대기열.
나의 목표는 CELERY_ROUTES
에 정의 된 하나의 작업 만 처리하고 다른 모든 작업을 처리하는 기본 대기열을 갖는 것입니다.
rabbitmqctl list_queues
반환
celery 0
을 따라 두 번
rabbitmqctl list_bindings
반환
exchange celery queue celery []
를 실행. 토끼 서버를 다시 시작해도 아무 것도 바뀌지 않았습니다.
셀러 리 3.1에 새로운 형식의 'task_queue'가 사용되었습니다. 'CELERY_ROUTES'사용 중입니다. – Netro