У нас есть распределенная архитектура на основе rabbitMQ
и Celery
.
Мы можем запускать параллельно несколько задач без каких-либо проблем. Масштабируемость хороша.
Теперь нам нужно дистанционно управлять задачей: ПАУЗА, ВОЗОБНОВИТЬ, ОТМЕНА. Единственное решение, которое мы нашли, - сделать в задаче Celery вызовом RPC другой задаче, которая отвечает команде после запроса БД. Задача Celery и задача RPC находятся не на одном компьютере, и только задача RPC имеет доступ к БД.
Есть ли у вас какие-либо советы по его улучшению и легкому взаимодействию с текущей задачей? Спасибо вам
EDIT:
На самом деле мы хотели бы сделать что-то вроде на картинке ниже. Легко выполнить конфигурацию Blue
или Orange
, но мы не знаем, как делать оба одновременно.
Рабочие подписываются на общий Jobs queue
, и каждый рабочий имеет свой Admin queue
, объявленный на обмене.
EDIT:
ЕСЛИ это невозможно с помощью Celery
, я открыт для решения с другими фреймами, например python-rq
.