Как установить лимит ставок на очередь сельдерея?
Я прочитал это в документации на сельдерей:
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
поэтому для обходного пути, возможно, вы можете настроить одну задачу на одну очередь (что имеет смысл во многих ситуациях) и поставить ограничение на задачу.