Создание задачи
Содержание раздела
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
}'