Как рушиться и последовательно запускать задания-антагонисты в сельдерее

У меня есть задачи A и B в сельдерее. B является антагонистом для A. Таким образом, когда эти задачи выполняются параллельно с одинаковыми параметрами, система становится несовместимой. Есть два вопроса:

  1. Могу ли я выполнять задачи A и B всегда последовательно, основываясь на параметрах? Я хочу запустить A с параметром 1 и B с параметром 1 последовательно, но A(1) и B(2) могут работать параллельно.

  2. Есть ли способ свернуть повторяющиеся последовательности задач, которые еще не выполнялись? Скажем, у меня есть задачи ABABAB в брокере (в моем случае Redis), могу ли я просто выполнить AB?

Я склонен думать, что оба вопроса могут быть решены с помощью продвинутого брокера, но я бы хотел избежать развертывания RabbitMQ.

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

1 ответ

Решение

Я решил сохранить отдельную очередь для задач в Redis. Когда я отправляю новое задание в Celery, я также добавляю его в список Redis. Когда задача выполняется, она определяет, что она должна делать: A или B зависит от текущего состояния системы.

Решение не выглядит великолепно, но я надеюсь, что это не вызовет проблем.

Другие вопросы по тегам