2.13. Задачи и отложенные работы¶
2.13.1. Задачи (tasks)¶
Задачи суть те же пайплайны с набором функций, которые могут быть применены к сохраненным объектам или для любых других действий в системе (например, создание отчетов, инвалидация кэшированных данных и др.) и запущены в любое время, в т.ч. по расписанию.
Для выполнения задач в системе должны быть определены роли task_runner
и
scheduler
и настроена их конфигурация.
Отслеживать текущее состояние задач и управлять их выполнением можно через web-интерфейс на вкладке Tasks.

ID — UUID экземпляра задачи;
Name — Имя задачи;
Kind — Вид задачи:
single_shot — единоразовая задача;
continuous — непрерывно выполняемая задача;
periodical — задача, выполняемая по расписанию;
Schedule — Расписание выполнения задачи. Актуально только для задач вида «periodical»;
Started — Дата и время старта экземпляра задачи;
Finished — Дата и время окончания экземпляра задачи;
Status — Текущий статус задачи:
did not start;
pending;
running;
stopped;
failed;
completed;
Result — Сообщение о результате завершенной задачи (в статусе «stopped», или «failed», или «completed»);
Action — Возможные действия для управления выполнением задач:
Start
— запустить новый экземпляр неактивной задачи (задача в статусе «did not start» или «pending» — подсвечены зеленым в web-интерфейсе);Stop
— прекратить работу активного экземпляра задачи (в статусе «running»);Hide
— скрыть информацию об экземпляре задачи, завершившем свою работу (в статусе «stopped», или «failed», или «completed»).
Имя, вид и расписание выполнения задач определяются в конфигурации системы.
Информацию о конкретном экземпляре задачи можно получить в отдельном pop-up окне, которое выводится по клику на UUID задачи в колонке ID.

2.13.2. Отложенные работы (jobs)¶
Отложенные работы (jobs) по сути аналогичны задачам
(являются пайплайнами обработки объектов). Но в отличие от задач, которые
задаются и настраиваются в конфигурации системы,
отложенные работы задаются и вызываются в клиентском программном коде:
функция push_job
программного интерфейса репозитория. Например:
local params = ...
local obj = params.obj
if obj.id ~= '26DA4133-0F97-44E8-83E6-95BA7646FC02' then
repository.push_job('bad_job')
else
for i = 1, obj.repeats do
repository.push_job('sum', {obj.id, obj.initial, i})
end
end
return params
Web-интерфейс позволяет вести мониторинг отложенных работ, которые завершились с ошибкой, — вкладка Failed Jobs. Элементы web-интенфейса и набор операций, доступные на этой вкладке, аналогичны элементам и операциям ремонтной очереди на вкладке Repair (см. подробнее).
В конфигурации системы также можно задать:
ограничение на количество отложенных работ, выполняемых одновременно;
порог количества выполняемых пайплайнов для задач и отложенных работ.