Консольные утилиты
Celery beat
Процесс планирования периодических задач.
Позволяет планировать и исполнять задачи по расписанию.
Команда:
aos-scheduler-beat
Имя службы systemd:
aos-scheduler-beat.service
Наименование |
Описание |
Значение по умолчанию |
|---|---|---|
|
Аргумент позволяет запустить сервис в режиме |
|
|
Путь к файлу для логирования. |
|
Отказоустойчивость 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
Наименование |
Описание |
Значение по умолчанию |
|---|---|---|
|
Аргумент позволяет запустить сервис в режиме |
|
|
Путь к файлу для логирования. |
|