Сделайте так, чтобы сельдерей перестал потреблять задачи

Предпосылки: Есть небольшой кластер сельдерея, обрабатывающий некоторые задачи. У каждого экземпляра сельдерея работает несколько рабочих. Все работает под колбой.

Задачи: мне нужна возможность приостановить / возобновить использование задач из определенного узла из кода. Т.е. task может принять решение, следует ли текущий экземпляр сельдерея и все его рабочие приостановить или возобновить использование задач.

Не нашел прямого способа решить эту проблему. Какие-либо предложения?

Заранее спасибо!


person kollaps    schedule 17.04.2012    source источник


Ответы (2)


Control.cancel_consumer(queue, **kwargs) (ссылка) - это все, что вам, вероятно, понадобится для вашего варианта использования.

person Abhinav Singh    schedule 04.09.2013

Возможно, лучшей стратегией было бы разделить работу по нескольким очередям.

Создайте очередь default, в которой начинаются все задачи. Рабочие, наблюдающие за очередью по умолчанию, могут, в соответствии с вашей логикой, добавлять подзадачи к другим активным очередям. Вам может не понадобиться эта дополнительная очередь, если вы можете добавлять задачи в активные очереди прямо из flask.

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

person Evan Muehlhausen    schedule 04.05.2012