2015-10-12 3 views
0

У меня есть задача с ограничением скорости в Сельдерей, но результаты, как показано в «Цвете», выглядят так, как будто они обрабатывают сразу несколько задач, а затем подчиняются пределу скорости. Почему это происходит? Есть ли что-то, что мне нужно сделать, чтобы убедиться, что он соблюдает ограничение скорости с самого начала?Соответствует ли сельдерей правильному тарифу?

@shared_task(rate_limit="4/m") 
    def my_task(a,b): 
     ... 

...

my_task.apply_async((x, y,),) 

succeeded tasks

steps

ответ

3

У вас есть более чем один работник потребляющих my_task? Если так, ваш лимит ставок не будет введен в действие, поскольку лимиты скорости сельдерея равны на одного работника (docs). Чтобы обойти это, вам нужно направить my_task в очередь, в которой есть только один рабочий, потребляющий ее. См. routing docs.

+0

хороший звонок, похоже, у меня был рабочий, который не закрывался должным образом. Я пропустил это сообщение об ошибке 'UserWarning: узел с именем [email protected] уже использует этот почтовый ящик процесса!' – grrrrrr