TDG Documentation portal logo
Помощь
Обновлена 22 июня 2026 г. в 15:31

Задачи

Задачи (tasks) - это загруженные в TDG пользовательские функции, которые исполняются автоматически (в том числе по расписанию) или вызываются вручную изнутри TDG.

Задачи используются для реализации внутренней бизнес-логики решения. Примеры: построение регулярных отчётов или инвалидация кэшей. Для реализации логики, доступной для вызова извне, используется механизм сервис-функций.

Технически, задачи реализуются в виде функций на языке Lua. Возвращаемое значение функции является результатом выполнения соответствующей задачи.

Существует три вида задач:

  • единоразовые (single-shot) - выполняются один раз после каждого вызова вручную из интерфейса TDG.
  • непрерывно выполняемые (continuous) - выполняются циклически с заданным интервалом времени. Например, если TDG используется как кэш горячих данных, такая задача может автоматически обновлять этот кэш на основе изменений в данных раз в несколько минут.
  • по расписанию (periodical) - выполняются по расписанию, заданному в расширенном формате cron с добавлением секунд; подробнее в справочнике по конфигурации бизнес-логики. Например, в конце каждого дня можно строить отчёты по хранимым в кластере данным.

В этом руководстве рассмотрим пример создания задач в TDG и инструменты управления задачами.

Для выполнения примера требуется настроенный кластер TDG.

Руководство включает в себя следующие шаги:

Конфигурация задач

Чтобы добавить в TDG задачу, необходимо добавить соответствующую секцию в конфигурацию TDG. Задачи можно описывать либо в общем конфигурационном файле (секция tasks в файле config.yml), либо в отдельном файле tasks.yml.

Конфигурация задачи включает такие параметры, как её уникальное имя, вызываемая функция, вид задачи и другие. Полная информация о параметрах конфигурации задач приведена в справочнике по конфигурации бизнес-логики.

Пример конфигурации трёх задач разных видов:

# config.ymltasks:  report_now:    kind: single_shot    function: tasks.build_report  update_caches:    kind: continuous    function: tasks.update_caches    pause_sec: 3600  weekly_report:    kind: periodical    function: tasks.build_report    schedule: "0 0 19 * * 5"

Здесь:

  • report_now - единоразовая задача. Вызывается вручную.
  • update_caches - задача, которая выполняется автоматически с периодом в 1 час (3600 секунд).
  • weekly_report - задача, которая исполняется по расписанию каждую пятницу в 19:00:00. Использует ту же функцию, что и задача report_now.

Если вызываемая функция имеет аргументы, их значения можно передать в параметре args:

# config.ymltasks:  task_with_args:    kind: single_shot    function: tasks.function_with_args    args: [1, "hello"]

Если в TDG включен режим обязательной аутентификации, необходимо добавить параметр run_as для указания логина пользователя, от имени которого будут выполняться задачи по расписанию и периодические задачи. В веб-интерфейсе логин пользователя можно найти на вкладке Users, он приведен в таблице в поле Login.

# config.yml  update_caches:    kind: continuous    function: tasks.update_caches    pause_sec: 3600    run_as:      user: zd2851  weekly_report:    kind: periodical    function: tasks.build_report    schedule: "0 0 19 * * 5"    run_as:      user: username

Реализация задач на Lua

Как указано в конфигурации задач, соответствующие им функции должны храниться в файле tasks.lua.

Для упрощения демонстрации реализуем функции-заглушки:

– tasks.lualocal function build_report()    return 'Report is ready'endlocal function update_caches()    return 'Caches updated'endreturn {    build_report = build_report    update_caches = update_caches}

Загрузка задач

Чтобы выполнить пример, нужно загрузить архив с файлом конфигурации и функциями задач в TDG. Для этого:

  1. Поместите Lua-файл с кодом задач в папку src.
  2. Упакуйте в zip-архив:
    • папку src, внутри которой лежит файл с кодом задач;
    • файл конфигурации config.yml.
  3. Загрузите архив в TDG согласно инструкции.

Управление задачами

Инструменты для управления задачами и отслеживания их выполнения расположены на вкладке Tasks веб-интерфейса TDG. Полная информация об управлении задачами через веб-интерфейс приведена в разделе Задачи руководства администратора.