2015-05-04 9 views
0

Есть ли функциональность сельдерея или предпочтительный способ выполнения периодических фоновых задач локально при использовании одного рабочего? Похоже на фоновый поток, но запланированный и обработанный сельдерей?Работник сельдерей: периодическая локальная фоновая задача

celery.beat не подходит, поскольку он просто привязан к потребителю (так что может работать на любом сервере) - это тип планирования, который я был после, но просто задача, которая всегда выполняется локально на каждом сервере запуск этого рабочего (задача выполняет некоторую очистку и статистику, связанную с основной задачей, которую обрабатывает рабочий).

Возможно, я ошибаюсь, но я ограничусь реализацией этого в рамках рабочего демона сельдерея.

ответ

0

Вы можете использовать a custom remote control command и использовать the broadcast function на cron для запуска очистки или любого другого, что может потребоваться.

+0

Хм, да, я вижу, что рабочий процесс, возможно, работает, хотя кажется, что он с неправильного конца (скорее, будет инициировать Сельдерей). В прошлом у нас также были проблемы с надежностью. – AndyC

0

Один из возможных способов, который я думал, хотя и не идеальный, - исправить класс celery.worker.heartbeat Heart().

Поскольку мы уже используем сердцебиения, класс позволяет простую модификацию способу его start() (добавить еще self.timer.call_repeatedly() запись), или дополнительный self.eventer.on_enabled.add()__init__ записи, которая ссылается на новый метод, который также использует self.timer.call_repeatedly() для выполнения периодической задачи.

Смежные вопросы