Консольные утилиты¶
Celery beat¶
Процесс планирования периодических задач.
Позволяет планировать и исполнять задачи по расписанию.
Команда:
aos-scheduler-beat
Имя службы systemd:
aos-scheduler-beat.service
Наименование | Описание | Значение по умолчанию |
---|---|---|
--debug |
Аргумент позволяет запустить сервис в режиме DEBUG . |
False |
--logfile |
Путь к файлу для логирования. | /var/log/aos/scheduler/beat.log |
Отказоустойчивость Celery beat¶
В случае запуска нескольких beat-процессов (в том числе на разных серверах), настроенных на одну и ту же базу данных и сервер RabbitMQ, будет работать следующий алгоритм синхронизации задач:
- Один из beat-процессов определяет, что задача готова по расписанию к отправке в очередь для обработки worker процессами;
- Beat-процесс создает в брокере сообщений очередь с атрибутом exclusive (данный атрибут включает запрет подключения к очереди более одного клиента и автоматически удаляет очередь после закрытия подключения). Название очереди соответствует данному экземпляру задачи -
celery_beat_{task_id}_{run_count_id}.mutex
. Где:task_id
- ID задачи;run_count_id
- Количество выполненных запусков задачи. Если задача не выполнялась значение параметра 0.
- Если в данный момент эту же задачу пытается обработать другой beat-процесс, то по ошибке подключения к exclusive-очереди определяется, что задача уже находится в обработке и данная задача не отправляется повторно в очередь;
- Первый beat-процесс отправляет экземпляр задачи в очередь обработки, делает принудительную синхронизацию с базой данных для того, чтобы обновить у задачи значение
total_run_count
- количество запусков задачи и закрывает подключение к exclusive-очереди; - Если после этого какой-либо другой 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 |