Задать вопрос

Django + Celery + RabbitMQ в кластере. В очереди имеем дубликаты от periodic_task задач

Две копии Django(1.3) приложений запущены на двух нодах.
На двух установлены Celery(2.4) с backend RabbitMQ(2.7.1).
RabbitMQ между собой реплицируются.

В приложении есть переодически выполняемые задачи. Скажем каждый час нужно скачать и пропарсить документ.

Так вот в один момент времени каждое из двух приложений добавляет в очередь по задаче (по одинаковой задаче). И таким образом мы дважды скачиваем документ и дважды его парсим.

Как этого избежать ???
  • Вопрос задан
  • 3850 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@niko83 Автор вопроса
Кажется решения из коробки нет.
Какую-то самоедльную примочку мастерить придётся так как:

celery.readthedocs.org/en/latest/userguide/periodic-tasks.html
«You can also start celerybeat with celeryd by using the -B option, this is convenient if you only intend to use one worker node»

python manage.py celeryd --help
«Also run the celerybeat periodic task scheduler. NOTE:
Only one instance of celerybeat must berunning at any
one time.»
Ответ написан
Комментировать
@salvator
Ну так в чем вопрос то? Держите celerybeat на одной ноде, пусть он раздает задачи.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
Greenway Global Новосибирск
от 150 000 ₽
SPA2099 Москва
До 100 000 ₽
HR Prime Москва
от 300 000 до 3 800 000 ₽