Консольные утилиты

Celery beat

Процесс планирования периодических задач.

Позволяет планировать и исполнять задачи по расписанию.

  • Команда:

    aos-scheduler-beat
    
  • Имя службы systemd:

    aos-scheduler-beat.service
    
Аргументы утилиты
Наименование Описание Значение по умолчанию
--debug Аргумент позволяет запустить сервис в режиме DEBUG. False
--logfile Путь к файлу для логирования. /var/log/aos/scheduler/beat.log

Отказоустойчивость Celery beat

В случае запуска нескольких beat-процессов (в том числе на разных серверах), настроенных на одну и ту же базу данных и сервер RabbitMQ, будет работать следующий алгоритм синхронизации задач:

  1. Один из beat-процессов определяет, что задача готова по расписанию к отправке в очередь для обработки worker процессами;
  2. Beat-процесс создает в брокере сообщений очередь с атрибутом exclusive (данный атрибут включает запрет подключения к очереди более одного клиента и автоматически удаляет очередь после закрытия подключения). Название очереди соответствует данному экземпляру задачи - celery_beat_{task_id}_{run_count_id}.mutex. Где:
    • task_id - ID задачи;
    • run_count_id - Количество выполненных запусков задачи. Если задача не выполнялась значение параметра 0.
  3. Если в данный момент эту же задачу пытается обработать другой beat-процесс, то по ошибке подключения к exclusive-очереди определяется, что задача уже находится в обработке и данная задача не отправляется повторно в очередь;
  4. Первый beat-процесс отправляет экземпляр задачи в очередь обработки, делает принудительную синхронизацию с базой данных для того, чтобы обновить у задачи значение total_run_count - количество запусков задачи и закрывает подключение к exclusive-очереди;
  5. Если после этого какой-либо другой beat-процесс попытается обработать эту же задачу, то он сверяет run_count_id с текущим сохраненным в базу данных total_run_count и не обрабатывает повторно задачу, если она уже выполнялась с текущим для данного beat процесса run_count_id.

Celery worker

Процесс обработки периодических задач. Следит за появлением задач в очереди запланированных задач и исполняет их.

  • Команда:

    aos-scheduler-worker
    
  • Имя службы systemd:

    aos-scheduler-worker.service
    
Аргументы утилиты
Наименование Описание Значение по умолчанию
--debug Аргумент позволяет запустить сервис в режиме DEBUG. False
--logfile Путь к файлу для логирования. /var/log/aos/scheduler/worker.log