django celery - изпълнява две опашки в един воркър

Използвам целина за изискванията на моя проект. В момента създадох опашка „HighPriorityQueue“ заедно с опашката по подразбиране, т.е. ще има един работник и две опашки.

Ще има различни задачи, поставени на опашка и в двете опашки. Трябва да обработя „HighPriorityQueue“ всеки път, когато задача бъде поставена на опашка в него.

Съмнявам се как целината ще обработи тези опашки? Celery ще обработва ли паралелно опашките? Или мога да го направя по такъв начин, че ако някаква задача е поставена на опашка в „HighPriorityQueue“, тя трябва да бъде обработена незабавно, независимо от задачите, които вече са поставени на опашка в тази по подразбиране?

Моля за съвет и благодаря предварително.


person SkariaArun    schedule 04.03.2013    source източник


Отговори (1)


Уау, стар въпрос...

Celery не може да даде приоритет на набор от опашки. Най-добрият ви вариант е да имате работен пул с висок приоритет, който консумира само HighPriortyQueue и пул работни по подразбиране, който консумира или default+HighPriorityQueue, или просто `по подразбиране.

Някои брокери на съобщения (RabbitMQ със сигурност) ви позволяват да зададете приоритет в опашката, като основно натискате важни съобщения в опашката в горната част, за да бъдат консумирани първи, тогава вашият един работник в Celery може без да погълне тези съобщения и да постигне основно това, което искате. Правенето на това на ниво опашка обаче идва със собствени предизвикателства/проблеми.

person bluescores    schedule 11.12.2018