2012-04-17 2 views
2

전제 조건 : 일부 태스크를 처리하는 작은 셀러리 클러스터가 있습니다. 셀러리 인스턴스마다 실행중인 작업자가 거의 없습니다. 모든 것이 플라스크 아래에서 움직이고 있습니다.셀러 리가 태스크를 소모하는 것을 막으십시오.

작업 : 특정 노드의 작업 소비를 코드에서 일시 중지/다시 시작하는 기능이 필요합니다. 나는. 작업은 현재 셀러리 인스턴스와 모든 작업자가 작업을 일시 중지하거나 다시 시작해야하는 경우 결정을 내릴 수 있습니다.

해결 방법이 없습니다. 어떤 제안?

미리 감사드립니다.

답변

0

아마도 더 나은 전략은 여러 대기열에 걸쳐 작업을 나누는 것입니다.

모든 작업이 시작되는 default 대기열이 있어야합니다. 기본 큐를 보는 작업자는 논리에 따라 다른 활성 큐에 하위 작업을 추가 할 수 있습니다. 플라스크에서 직접 활성 대기열에 작업을 추가 할 수있는 경우이 여분의 대기열이 필요하지 않을 수 있습니다.

그런 식으로 각 노드는 일시 중지되었거나 활성 상태인지에 대해 걱정할 필요가 없습니다. 대기열에 추가 된 모든 것을 그냥 소비합니다. 기본 작업자가 하위 작업을 추가하지 않은 경우 이러한 위치 별 대기열은 비어 있으므로 일시 중지됩니다.

0

Control.cancel_consumer(queue, **kwargs) (reference)은 모두 유스 케이스에 필요한 것입니다.

관련 문제