Django
및 RabbitMQ
및 Celery
은 단일 시스템에서 작동합니다. 나는 here에서 지시를 따랐다. 이제는 함께 작동하도록하고 싶지만 다른 서버에있는 경우에 사용하십시오. Django
은 Celery
또는 Celery
약 Django
에 대해 알고 있습니다.다른 머신 (서버)의 Django + RabbitMQ + Celery 모두
그래서, 기본적으로 난 그냥 RabbitMQ
큐 (아마도 ID, 작업의 종류, 어쩌면 다른 정보)에 어떤 메시지를 보낼 Django
에서 원하는, 그리고 내가 RabbitMQ
가에 Celery
에 그 메시지 (의 수)를 게시 할 다른 서버. Celery/Django
은 서로에 대해 알지 않아야합니다. 기본적으로 나는 그 중 하나를 대체하기 쉬운 아키텍처를 원합니다. (나는 Django
이 Celery
에 의존해서는 안 말했듯이)
는 지금은
create_project.apply_async(args, countdown=10)
내가 그 직접 RabbitMQ와 유사한 호출로 대체 할처럼 내 Django
여러 통화에 있습니다. 그런 다음 RabbitMQ
은 Celery
(가능할 때)에 알리고 Celery
은 해당 작업을 수행해야합니다 (아마도 Django
과 상호 작용하지만 REST
인터페이스를 통해).
또한 두 개 이상의 서버에 Celery
명의 작업자가 있어야하며 메시지의 일부 필드에 따라 하나만 알려주고 싶습니다. 이게 복잡하다면 다음과 같은 일을 (다른 머신에서) 체크 할 수 있습니다 : 메시지의 IP 주소 필드를 확인하는 것과 같은 일이며, 태스크 실행만으로 끝나지 않으면됩니다.
어떻게하면됩니까? 가능하다면 이론적 설명이 아닌 코드 + 구성 예제를 선호합니다.
편집 :
나는 나의 유스 케이스 셀러리에 대한 총 오버 헤드라고 생각합니다. 맞춤 클라이언트로 라우팅하는 간단한 RabbitMQ 이 작업을 수행합니다. 난 이미 간단한 유스 케이스 (한 서버)를 시도하고 완벽하게 작동합니다. 은 멀티 서버 통신 준비가 쉬워야합니다. 나는 샐러리를 좋아하지 않는다. "마법"이라면 너무 많은 내용을 숨기고 구성하기 쉽지 않습니다. 그러나 저는 다른 사람들의 의견에 관심이 있기 때문에이 질문을 살아 있습니다.
답장을 보내 주셔서 감사합니다. – Igor