2017-12-31 10 views
0

셀러리에 대한 기본적인 이해와 그것이 작동하는 방법이 있습니다. 현재 진행중인 프로젝트에서 필자는 작업의 우선 순위를 매길 필요가 있습니다. 셀러리 대기열에 A와 B라는 두 가지 종류의 작업이있는 경우 샐러리는 대기열의 헤드에있는 작업과 상관없이 B 작업의 우선 순위를 지정해야합니다. 그렇게 할 수있는 방법이 있습니까?셀러리 대기열/작업의 우선 순위 지정

대기열 우선 순위 지정은 나에게도 도움이됩니다. high_priority_queue와 low_priority_queue라는 두 개의 대기열을 만들 수 있다는 것을 의미하며 셀러리는 항상 high_priority_queue의 작업을 먼저 실행 한 다음 low_priority_queue로 이동해야합니다.

다른 대기열을 두 대기열에 할당 할 수 있다는 것도 알고 있지만 두 대기열의 작업이 동시에 실행되고 있음을 알 수 있습니다. high_priority_queue의 작업을 먼저 실행해야합니다. 어떤 아이디어?

감사

답변

0

는 일반적으로 여러 큐와 mutliple 작업자 접근 방식을 권장하지만 당신은 지적으로, 낮은 우선 순위 큐/노동자는 동시에 다음 우선 순위가 높은 노동자로 일하게 될 것입니다. 오히려 빨리 실행하려는 작은 작업이 많은 경우 흥미로운 설정이므로 우선 순위가 높은 대기열에 넣고 긴 작업은 우선 순위가 낮은 대기열로 푸시해야합니다. 우선 순위가 높은 작업자에게 더 많은 리소스 (또는 더 나은 시스템)를 제공하는 설정을 할 수도 있습니다.

다른 솔루션을 원할 경우 apply_asyncpriority 매개 변수를 제안 할 예정입니다. a different question I answered recently에서 지적한대로 약간의 설정이 필요하며 특정 브로커에서만 작동합니다. (RabbitMQ의 경우 버전 3.5.0에서 작동합니다.) 대기열에 x-max-priority을 설정하고 참조 된 대답에서 지적한 추가 설정을 지정하면 다음과 같이 간단하게 우선 순위를 지정할 수 있습니다.

your_task.apply_async(queue="your_queue_that_can_handle_priority", priority=10)