Создание задачи

Содержание раздела
  1. URL
  2. Заголовки запроса
    1. [ x-request-id ]
  3. Тело запроса
    1. name
    2. schedule
    3. command
    4. [ datasource ]
    5. [ active ]
  4. Ограничения
  5. Примеры cURL-запросов
    1. Создание задачи, выполняемой в системе
    2. Создание задачи, выполняемой в датасорсе
    3. Создание неактивной задачи с несколькими запросами

POST-метод создает задачу планировщика — список запросов, выполняемых по заданному расписанию.

URL

{baseUrl}/api/v1/scheduler/jobs

Параметры:

  • baseUrl — адрес ноды Prostore, состоящий из IP-адреса или доменного имени и номера порта.

Заголовки запроса

[ x-request-id ]

Задает уникальный идентификатор HTTP-запроса. Если не указан, система генерирует UUID-значение и возвращает его в качестве идентификатора в ответе.

Тело запроса

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

name

Имя создаваемой задачи, уникальное в пределах окружения. По нему к задаче можно обращаться в других запросах.

schedule

Расписание задачи в поддерживаемом формате.

Проверить корректность расписания в созданной задаче можно с помощью ее значения nextRunDateTime. При значении null удалите задачу и пересоздайте ее с корректным расписанием.

command

Список запросов, выполняемых последовательно в порядке их следования при каждом запуске задачи. Запросы перечисляются в двойных кавычках через запятую.

Запросы в задаче могут обращаться либо к системе (см. синтаксис SQL+), либо к одному из датасорсов хранилища. Запросы к датасорсу должны быть указаны в формате соответствующей СУБД.

Перед запросами, которые не поддерживают указание логической БД, используйте USE. Выбранная логическая БД действует до следующего USE в списке запросов задачи или до конца всего списка.

Корректность запросов не проверяется при создании задачи. Если хотя бы один некорректен, при каждом запуске задачи фиксируется ошибка в ее журнале запусков и логе ноды.

[ datasource ]

Имя датасорса хранилища, в которым выполняются запросы задачи. Если указано, запросы передаются в датасорс в указанном виде, без обработки системой.

Если не указано или равно null, запросы задачи выполняются в системе.

[ active ]

Признак активности создаваемой задачи:

  • true (по умолчанию) — задача активна и выполняется по расписанию;
  • false — задача неактивна и не выполняется (до ее активации).

Ограничения

  • Изменение параметров задачи, кроме признака ее активности, не поддерживается. Чтобы изменить имя, расписание, запросы или исполнителя задачи, удалите ее и создайте заново с новыми параметрами.
  • Корректность расписания и запросов в задаче не проверяются при ее создании.

Примеры cURL-запросов

Создание задачи, выполняемой в системе

Задача на принудительную синхронизацию материализованных представлений в логической БД matview_db, выполняемая ежедневно в 3 часа ночи:

curl -X 'POST' \
  'http://localhost:9090/api/v1/scheduler/jobs' \
  -H 'x-request-id: 4f2b8c1e-9d3a-4e57-b6f0-1c8a92d47e35' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "matview_db_sync",
    "schedule": "0 3 * * *",
    "command": [
      "SYNC_MATERIALIZED_VIEWS(matview_db)"
    ]
  }'

Создание задачи, выполняемой в датасорсе

Еженедельное обслуживание физической таблицы в датасорсе adp по воскресеньям в 0:00:

curl -X 'POST' \
  'http://localhost:9090/api/v1/scheduler/jobs' \
  -H 'x-request-id: b71d0e93-5a24-4c8b-9f16-30e7ac5b2d84' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "adp_sales_vacuum",
    "schedule": "0 0 * * 0",
    "command": [
      "VACUUM ANALYZE marketing.sales_actual"
    ],
    "datasource": "adp"
  }'

Создание неактивной задачи с несколькими запросами

Неактивная задача с несколькими запросами, загружающими данные в дельте (после активации задача будет выполняться каждые 15 минут):

curl -X 'POST' \
  'http://localhost:9090/api/v1/scheduler/jobs' \
  -H 'x-request-id: 2e6c47a8-b0f1-4d39-85ca-7b91e3f0a6d2' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "sales_upload_every_15_min",
    "schedule": "*/15 * * * *",
    "command": [
      "USE marketing",
      "BEGIN DELTA",
      "INSERT INTO marketing.sales SELECT * FROM marketing.sales_ext_upload",
      "COMMIT DELTA"
    ],
    "active": false
  }'