- 은하지
CELERY_QUEUES
- 정의
CELERY_DEFAULT_QUEUE = 'default'
이 표에서와 같이 즉시 경로를 생성 - 사용자 지정 라우터 클래스 (https://github.com/celery/celery/issues/150)을 (직접 형) 정의
CELERY_CREATE_MISSING_QUEUES = True
- 을 설정해야 .
CELERY_CREATE_MISSING_QUEUES
때문에 사용자 지정 라우터가 반환 한 경로의 새 큐가 생성된다고 가정합니다. 지금은 실행 작업자 노드
-Q
인수를 전달하지 않고이 문서에 부합하는 것 같다 '기본'큐에서만 소비 -
기본 그것으로 CELERY_QUEUES 설정에 정의 된 모든 대기열에서 소비됩니다 (지정되지 않은 경우 대기열은 기본적으로 셀체라는 ).
동적으로 작성된 것을 포함하여 모든 대기열에서 작업자 노드를 사용할 수있는 방법이 있습니까?
덕분에,
감사합니다. 재미있었습니다. 예, 저는 RabbitMQ를 사용하며 항상 동적 큐를 가질 계획이었습니다. 일종의 와일드 카드 패턴을 사용하여 모든 대기열에서 작업자가 작업하도록 지시 할 수 있기를 바랍니다. 나는 당신의 제안을 지금 시도 할 것입니다. 질문 - 메시지 브로커가 유일한 공통점 인 작업자가 다른 서버에서 실행될 수 있다는 점을 감안할 때 app.control.add_consumer (...)는 정보를 근로자에게 어떻게 전달합니까? – ksrini
@ksrini 예 와일드 카드 패턴을 사용할 수 있는지 찾기 위해 소스 코드를 검색하고 있었지만 소비 할 대기열을 설정하는 메소드는 쉼표로 구분 된 대기열 목록이 필요합니다. 그리고 제어 명령은 브로커 (RabbitMQ)를 사용하여 작업자에게 'celery.app.control' 모듈을 확인합니다. – Pierre
add_consumer 제어 명령을 사용하여 제안 된 접근 방식이 효과적이었습니다! 감사!add_consumer가 reply = True 일 때 add_consumer가 약간의 시간 (약 1-2 초)이 걸릴 것으로 보이고 내가 결정한 라우터에서 작업을 수행 할 계획이기 때문에 worker가 이미 해당 대기열에서 소비하고 있지 않은 경우에만 add_consumer를 호출하고 싶습니다. 새로운 큐는 경로의 일부로. reply = False로 설정하면 더 빠릅니다. worker가 이미 대기열에서 소비하고있을지라도 add_consumer 호출에 문제가 있습니까? – ksrini