Задать вопрос
STLEON
@STLEON
In Console We Trust. Code hard. Or die.

Может ли Celery писать результат в бд на другом хосте?

Ситуация такая. Есть сервер (server1) с django, субд mysql и Celery (+django-celery). Также на данном сервере запущено несколько воркеров.

Одно задание (task0) стартует по расписанию, делает запрос через django orm, получает данные, разбивает их на отдельные части и отправляет на обработку (task2) другим воркерам с помощью брокера rabbitmq. Они получают данные из очереди, делают с данными определенные манипуляции и сохраняют результаты-объекты в бд.

На одном сервере все работает замечательно, вопрос в следующем.

Если мне понадобится установить воркеры на другой машине (server2), то им по-сути нужен будет доступ к базе данных, которая на server1.

Правильно ли я понимаю, что надо будет клонировать весь проект на server2, поменять айпи дня подключения к бд в settings.py, и запустить воркеров? Это выглядит все не очень заманчиво, может есть какой-то другой способ?

Читал это:
If you want to store task results in the Django database then you still need to install the django-celery library for that (alternatively you can use the SQLAlchemy result backend).

Пробовал локально запускать воркеров, но в бд нигде не появлялись результаты выполнения задач.
CELERY_RESULT_BACKEND='djcelery.backends.database:DatabaseBackend',
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler',

Пока острой задачи в переезде воркеров на другой сервер не стоит, но интересуюсь на будущее.

Спасибо!
  • Вопрос задан
  • 3067 просмотров
Подписаться 2 Оценить Комментировать
Ответ пользователя Руслан Роскошный К ответам на вопрос (2)
oshikuru
@oshikuru
Python-разработчик, не брезгую js / html / css
Все будет работать замечательно. В идеале еще и бд вынести на отдельную машину. И к ней подключаться как с одного сервера, так и с другого.
Ответ написан
Комментировать