Как установить лимит ставок на очередь сельдерея?

Я прочитал это в документации на сельдерей:

Task.rate_limit http://celery.readthedocs.org/en/latest/userguide/tasks.html#Task.rate_limit

Обратите внимание, что это ограничение скорости для каждого рабочего экземпляра, а не ограничение по глобальной скорости. Чтобы обеспечить ограничение глобальной скорости (например, для API с максимальным количеством запросов в секунду), вы должны ограничить заданную очередь.

Как установить лимит ставок на очередь сельдерея?

Спасибо, что не обсудили вопрос.

Ответы

Ответ 1

Оказывается, это невозможно сделать на уровне очереди для нескольких работников. Это можно сделать на уровне очереди для 1 работника. Или на уровне очереди для каждого рабочего.

Итак, если вы скажете 10 рабочих мест в минуту на 5 рабочих. Ваши работники будут обрабатывать до 50 рабочих мест в минуту вместе.

Итак, чтобы работать только 10 заданий, вы либо выбрали одного работника. Или выбрали 5 работников с лимитом 2 минуты.

Ответ 2

Вы можете установить этот предел на панели цветкa > рабочий. есть указанное пустое место для ввода вашего лимита. Формат, который предлагается использовать, также выглядит следующим образом:

Пределы скорости можно указать в секундах, минутах или часах, добавив к значению значение "/s", > "/m" или "/h". Задачи будут равномерно распределены по указанному > временному кадру.

Пример: "100/m" (100 задач в минуту). Это обеспечит минимальную задержку > 600 мс между запуском двух задач на одном рабочем экземпляре.

Ответ 3

Эй, я пытаюсь найти способ сделать ограничение скорости в очереди, и я узнаю, что Сельдерей не может этого сделать, однако Сельдерей может контролировать скорость выполнения каждой задачи, см. это:

http://docs.celeryproject.org/en/latest/userguide/workers.html#rate-limits

поэтому для обходного пути, возможно, вы можете настроить одну задачу на одну очередь (что имеет смысл во многих ситуациях) и поставить ограничение на задачу.