Django-celina състояние ПОЛУЧЕНО?

Изпълнявам някои задачи чрез django-celery (с rabbitmq като бекенд), задачите отнемат време и интензивно натоварват процесора.

Получих 2 работни екземпляра Ec2 (единият е малък, а другият е среден с висок процесор).

Настроих малкия екземпляр да изпълнява 1 едновременна задача, а средния да изпълнява 4. Това работи добре за мен. Но понякога в монитора на целина виждам, че малкият екземпляр работи върху задача и още 2 или 3 задачи са в състояние „ПОЛУЧЕНИ“ (присвоени на малкия екземпляр), докато средният екземпляр не прави нищо. В идеалния случай id като средният екземпляр да има предпочитание пред малкия, но в този случай, ако малкият е в неговата едновременност, задачата трябва да премине към средния. Изглежда малкият екземпляр хапе повече, отколкото може да дъвче.. като при разпределянето на задачи за себе си, които не може да започне в момента.

Има ли начин работниците да приемат само задачите, които могат да започнат в този момент?

Екранна снимка: http://dl.dropbox.com/u/361747/task-state.png . Работникът, започващ с domU, е малък, този, започващ с ip, е среден.


person sajal    schedule 15.01.2012    source източник


Отговори (1)


Можете да използвате опцията CELERYD_PREFETCH_MULTIPLIER, за да контролирате колко задачи да се извличат предварително. Във вашия случай CELERYD_PREFETCH_MULTIPLIER=1 ще помогне за равномерното разпределение на задачите.

http://ask.github.com/celery/configuration.html#celeryd-prefetch-multiplier

person mher    schedule 17.01.2012
comment
Благодаря, не знаех за тази настройка. Ще тества по-късно днес. - person sajal; 18.01.2012