ketovv
@ketovv
Питонист

Резонно ли использовать один Celery для множества приложений?

Есть поднятое Django приложение, которое использует Celery как вспомогательную зависимость. Celery поднимается как отдельный контейнер того же образа, что и Django-приложение. Как брокер используется Redis.

При добавлении некоторой микросервисности в проекте появилась необходимость использовать Celery отдельно от Django-сервиса. Можно ли это сделать используя только один поднятый контейнер Celery с несколькими воркерами? Или нужно создавать отдельный контейнер с Celery для каждого сервиса?
  • Вопрос задан
  • 330 просмотров
Решения вопроса 1
Assargin
@Assargin
Перед ответом смотрю наличие ✔ в ваших вопросах
Celery - это штука, которая умеет выполнять некоторые, помеченные вами специальным декоратором функции, "где-то там", асинхронно, в N единиц параллельности, и т.д. Но ключевой момент в кодовой базе. Если вы можете выделить код заданий в отдельный проект, так, что эти функции-задания будут работать - смело прикручивайте к нему Celery, оборачивайте в контейнер - и вот у вас микросервис заданий.

Однако лично я с таким не сталкивался, обычно кодовая база одна. В монолите на джанге ли, или в сервисе на фласке - задания писались мной так или иначе как часть одного или нескольких сервисов, и использовался код проекта: модели БД, либы.

Вполне реален и нормален сценарий, когда вы монолит подробили, к примеру, на 5 микросервисов. Задания также растеклись по ним, оказавшись в 3 из 5 сервисов. Значит, к тем сервисам, в который есть задания, нужно рядом поднимать контейнера на тех же образах, уже в качестве воркеров заданий.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы