2017-04-12 1 views
2

Celery는 대개 RabbitMQ와 같은 메시지 대기열에 대한 상위 인터페이스입니까? 동시 http 요청을 수행하는 여러 예약 된 작업자가있는 시스템을 설정하려고하지만 둘 중 하나가 필요한지 확실하지 않습니다. 내가 궁금해하는 또 다른 질문은 셀러리 또는 RabbitMQ를 사용한다면 작업자가 완료 할 코드에 실제 작업을 어디에 써야할까요?Celery와 RabbitMQ의 관계는 무엇입니까?

답변

1

RabbitMQ는 실제로 메시지 큐이며 Celery는이를 사용하여 작업자와 메시지를주고받습니다. Celery는 RabbitMQ를위한 인터페이스 이상의 것입니다. 셀러리는 직원을 만들고, 업무를 시작하고, 업무를 정의하는 데 사용합니다. Celery/RabbitMQ에 대한 유스 케이스처럼 들린다. @app.task 데코레이터를 사용하여 작업을 만듭니다. 자세한 내용은 docs을 확인하십시오. 이전 프로젝트에서 필자는 필요한 모든 작업을 정의하는 셀러리 용 모듈을 설정했습니다. 그런 다음 다른 모듈의 기능을 끌어 와서 작업에 사용할 수 있습니다.

1

셀러리는 작업을 예약하는 데 사용하는 API, 작업을 시작하는 코드, 진행 상황을 모니터링하는 데 사용하는 관리 도구 (예 : 꽃) 등의 작업 관리 프레임 워크입니다.

RabbitMQ는 셀러리의 "백엔드"중 하나입니다. Celery가 RabbitMQ에 대한 높은 수준의 인터페이스라고 말하는 것은 간단합니다. RabbitMQ는 Celery가 제대로 실행되고 제대로 작동하는 데 실제로 필요하지 않습니다. 그러나 실제로는 종종 함께 쌍을 이루고 셀러리는 RabbitMQ (또는 다른 대기열 또는 메시지 전달 백엔드)를 사용하여 낮은 수준에서 수행 할 수있는 몇 가지 작업을 수행하는 상위 수준 방법입니다.

관련 문제