4.3.9. TaskStatus¶
Описание¶
Метод возвращает статус задачи по ее task_ids и позволяет отслеживать этап, на котором задача находится в данный момент.
Запрос¶
{
"user_id":(number),
"methods":[
{
"method":"TaskStatus",
"params":{
"project_id":(number),
"task_ids":' id1 | [id1,id2] | "*" ',
"detailed_test_results":(boolean),
"restart_chain":(string)
}
}
]
}
где:
user_id— целое число, идентификатор пользователя;project_id— целое число, идентификатор проекта пользователя;task_ids— идентификаторы задач, поле может задаваться в одном из следующих форматов:id1— целое число, идентификатор задачи,[id1,id2]— массив целых чисел, идентификаторы задач,"*"— строка, символ «звездочки», запрос информации обо всех запущенных задачах, а также задачах в очереди.
detailed_test_results(опциональное поле) — логический тип, управляет уровнем детализации результатов тестов в полеtest_results:true— метод вернет результаты для каждой группы тестов отдельно, а также суммарный результат тестовtotal. Список групп тестов:file_summary,container_validation,video_parameters,audio_parameters,video_qualityиaudio_quality,false(значение по умолчанию) — метод вернет только суммарный результат тестов.
restart_chain(опциональное поле) — строка, управляет отображением статусов для цепочки перезапущенных задач. Возможные значения:first,last,exact,all(значение по умолчанию).О цепочке перезапусков
Задачи с одинаковым
initial_task_idобразуют в ответе группу-цепочку перезапущенных задач. Это задачи со статусомStalled, автоматически отправленные на повторную проверку. В настройках проекта задан сценарий автоматического перезапуска задач со статусомStalled, по умолчанию перезапуск задач включен, количество перезапусков — 3. Изменить сценарий можно в настройках проекта (описание приведено в разделе Перезапуск Stalled задач) либо с помощью метода ProjectSettingsChange. При каждом перезапуске создается новая задача с новымtask_id, но значениеinitial_task_idу всех задач цепочки одинаковое и равноtask_idисходной задачи.Таким образом,
initial_task_idпозволяет:найти все перезапуски, относящиеся к одной исходной задаче;
отследить, была ли задача в итоге выполнена (успешно или нет) после всех попыток перезапуска.
Параметр
restart_chainопределяет, статус каких задач из цепочки вернуть:first— статус только исходной (самой первой) задачи в цепочке. Информация о перезапусках не включается.last— статус только последней задачи в цепочке. Промежуточные перезапуски не отображаются.exact— статус только для конкретногоtask_id, указанного в запросе. Полезен, если нужно проверить статус конкретной задачи (например, промежуточного перезапуска).all(значение по умолчанию) — статусы всех задач, входящих в цепочку (исходная задача и все ее перезапуски).
Ответ¶
{
"reply":[
{
"method":"TaskStatus",
"result":[
{
"task_id":(number),
"uri":(string),
"name":(string),
"status":(string),
"initial_task_id":(number),
"progress":(number),
"test_results":{
"ok":(number),
"warning":(number),
"error":(number),
"fatal":(number),
"result":(string)
},
"task_page":(string),
"requested_task_ids":[]
}
],
"errors":[(string)]
}
]
}
где:
task_id— целое число, идентификатор пользователя;uri— строка, путь к анализируемому файлу;name— строка, имя файла;status— строка, статус, отражает этап, на котором находится задача. Список статусов:Scheduled— задача создана и добавлена в очередь на запуск. Далее статус изменяется на один из описанных ниже,Explore— задача отправлена на предварительный анализ зонду,Running— задача запущена,Completed— задача выполнена,Rejected— запуск задачи был отклонен. Информацию о причине можно найти в web–интерфейсе в блоке Dashboard → Незавершенные задачи. Возможные причины:Общая длительность медиафайла составила 0 секунд или зонд не смог определить длительность,
Медиафайл не найден по указанному пути URI,
Медиафайл не соответствует обязательным требованиям шаблона проверки. В настройках шаблона включена опция
Прерывать анализ при несоответствиидля тестов формата контейнера, формата видео или формата аудио. Отключить опцию можно в настройках шаблона,Неподдерживаемый формат медиафайла;
Доступ к проверке медиафайлов временно приостанавливается, если лицензионный баланс полностью исчерпан или его остаток меньше длительности файла, отправленного на проверку. Более подробно принцип расходования пакета лицензионных часов описан здесь.
Canceled— задача была остановлена. Возможные сценарии:задача была остановлена пользователем в web-интерфейсе или с помощью метода TaskStop. Источник остановки будет также указан на странице Dashboard → Незавершенные задачи,
задача была остановлена балансировщиком нагрузки в процессе вытеснения ввиду наличия задачи с приоритетом
Immediate. Более подробно работа балансировщика и описание приоритетов описаны на странице Dashboard.
Stalled— задача остановлена некорректно. Сервер перестал получать данные анализа, но команда на остановку задачи не была получена. Обычно это связано с потерей связи сервера с зондом или некорректным завершением работы зонда. В этом случае система перезапустит задачу 3 раза (по умолчанию). Сценарий автоматического перезапуска задач можно изменить в настройках проекта ➝ в блоке Перезапуск Stalled задач.
initial_task_id— целое число, идентификатор группы задач в рамках цепочки перезапусков. Для любой задачи в группе — включая первую —initial_task_idравенtask_idса́мой первой задачи. Если перезапусков не было,initial_task_idсовпадает сtask_idсамо́й задачи;progress— целое число, отражает ход выполнения задачи в процентах. Прогресс выводится для задач со статусамиRunningиCompleted;test_results— в зависимости от значенияdetailed_test_resultsв запросе, ответ метода включает суммарный результат тестов:ok— целое число, количество тестов без ошибок,warning— целое число, количество тестов с уровнем критичностиwarning, в которых обнаружена хотя бы одна ошибка,error— целое число, количество тестов с уровнем критичностиerror, в которых обнаружена хотя бы одна ошибка,fatal— количество тестов с уровнем критичностиfatal, в которых обнаружена хотя бы одна ошибка,
или отдельный результат для каждой группы тестов:
file_summary,container_validation,video_parameters,audio_parameters,video_quality,audio_quality,total(суммарный результат тестов).
result— строка, результат выполненной задачи:Passed— строка, задача успешно выполнена, ошибок не обнаружено,Warning— строка, задача выполнена, отчет содержит ошибки с уровнем критичностиwarning,Failed— строка, задача выполнена, отчет содержит ошибки с уровнем критичностиerrorилиfatal.
task_page— строка, адрес web-страницы задачи;requested_task_ids— массив целых чисел, идентификаторы запрошенных задач;errors— массив строк, возвращает перечень ошибок.
Пример¶
cURL¶#1. Простой запрос статуса одной задачи.
curl http://172.16.1.41/ctrl_api/v1/json \
-H "Content-Type: application/json" \
--data '{"user_id":1,"methods":[{"method":"TaskStatus","params":{"project_id":2,"task_ids":[2213]}}]}'
#2. Пример, в котором дополнительно передается поле detailed_test_results:true.
curl http://172.16.1.41/ctrl_api/v1/json \
-H "Content-Type: application/json" \
--data '{"user_id":1,"methods":[{"method":"TaskStatus","params":{"project_id":2,"task_ids":[2213],"detailed_test_results":true}}]}'
#3. Запрос статуса для трех задач с task_id 2213, 2222, 2288. Для третьей задачи задано заведомо несуществующее значения в поле task_ids.
curl http://172.16.1.41/ctrl_api/v1/json \
-H "Content-Type: application/json" \
--data '{"user_id":1,"methods":[{"method":"TaskStatus","params":{"project_id":2,"task_ids":[2213,2222,2288]}}]}'
#4. Запрос статуса для трех задач с task_id 2213, 2222, 2247. Третья задача получила статус Stalled и была автоматически перезапущена дважды.
curl http://172.16.1.41/ctrl_api/v1/json \
-H "Content-Type: application/json" \
--data '{"user_id":1,"methods":[{"method":"TaskStatus","params":{"project_id":2,"task_ids":[2213,2222,2247],"detailed_test_results":false,"restart_chain":"all"}}]}'
#5. Запрос статуса задачи с task_id 2247 со статусом Stalled и параметром restart_chain = all.
curl http://172.16.1.41/ctrl_api/v1/json \
-H "Content-Type: application/json" \
--data '{"user_id":1,"methods":[{"method":"TaskStatus","params":{"project_id":2,"task_ids":[2247],"detailed_test_results":false,"restart_chain":"all"}}]}'
#6. Запрос статуса задачи с task_id 2247 со статусом Stalled и параметром restart_chain = first.
curl http://172.16.1.41/ctrl_api/v1/json \
-H "Content-Type: application/json" \
--data '{"user_id":1,"methods":[{"method":"TaskStatus","params":{"project_id":2,"task_ids":[2247],"detailed_test_results":false,"restart_chain":"first"}}]}'
#7. Запрос статуса задачи с task_id 2247 со статусом Stalled и параметром restart_chain = last.
curl http://172.16.1.41/ctrl_api/v1/json \
-H "Content-Type: application/json" \
--data '{"user_id":1,"methods":[{"method":"TaskStatus","params":{"project_id":2,"task_ids":[2247],"detailed_test_results":false,"restart_chain":"last"}}]}'
#8. Запрос статуса задачи с task_id 2248 со статусом Stalled и параметром restart_chain = exact.
curl http://172.16.1.41/ctrl_api/v1/json \
-H "Content-Type: application/json" \
--data '{"user_id":1,"methods":[{"method":"TaskStatus","params":{"project_id":2,"task_ids":[2248],"detailed_test_results":false,"restart_chain":"exact"}}]}'
{
"reply": [
{
"method": "TaskStatus",
"result": [
{
"task_id": 2213,
"uri": "file:///mnt/VoD_storage/sample1.mp4",
"name": "",
"status": "Completed",
"initial_task_id": 2213,
"progress": 100,
"test_results": {
"ok": 36,
"warning": 1,
"error": 12,
"result": "Failed"
},
"task_page": "http://172.16.1.41/projects/2/apps/17/tasks/2213",
"requested_task_ids": [2213]
}
]
}
]
}
{
"reply": [
{
"method": "TaskStatus",
"result": [
{
"task_id": 2213,
"uri": "file:///mnt/VoD_storage/sample1.mp4",
"name": "",
"status": "Completed",
"initial_task_id": 2213,
"progress": 100,
"test_results": {
"file_summary": {
"ok": 9,
"warning": 1,
"error": 2
},
"container_validation": {
"ok": 5,
"error": 1
},
"video_parameters": {
"ok": 16,
"error": 6
},
"audio_parameters": {
"ok": 3,
"error": 2
},
"video_quality": {
"ok": 1,
"error": 1
},
"audio_quality": {
"ok": 2
},
"total": {
"ok": 36,
"warning": 1,
"error": 12
},
"result": "Failed"
},
"task_page": "http://172.16.1.41/projects/2/apps/17/tasks/2213",
"requested_task_ids": [
2213
]
}
]
}
]
}
{
"reply": [
{
"method": "TaskStatus",
"result": [
{
"task_id": 2222,
"uri": "file:///mnt/VoD_storage/sample2.mp4",
"name": "Test2",
"status": "Completed",
"progress": 100,
"test_results": {
"ok": 37,
"warning": 1,
"error": 8,
"fatal": 1,
"result": "Failed"
},
"task_page": "http://172.16.1.41/projects/2/apps/17/tasks/2222"
},
{
"task_id": 2213,
"uri": "file:///mnt/VoD_storage/sample1.mp4",
"name": "",
"status": "Completed",
"progress": 100,
"test_results": {
"ok": 36,
"warning": 1,
"error": 12,
"result": "Failed"
},
"task_page": "http://172.16.1.41/projects/2/apps/17/tasks/2213"
},
],
"errors": [
"Requested task IDs do not exist: [2288]"
]
}
]
}
{
"reply": [
{
"method": "TaskStatus",
"result": [
{
"task_id": 2213,
"uri": "file:///mnt/VoD_storage/sample1.mp4",
"name": "",
"status": "Completed",
"initial_task_id": 2213,
"progress": 100,
"test_results": {
"error": 12,
"ok": 36,
"warning": 1,
"result": "Failed"
},
"task_page": "http://172.16.1.41/projects/2/apps/17/tasks/2213",
"requested_task_ids": [
2213
]
},
{
"task_id": 2222,
"uri": "file:///mnt/VoD_storage/sample2.mp4",
"name": "",
"status": "Completed",
"initial_task_id": 2222,
"progress": 100,
"test_results": {
"ok": 37,
"error": 8,
"warning": 1,
"fatal": 1,
"result": "Failed"
},
"task_page": "http://172.16.1.41/projects/2/apps/17/tasks/2222",
"requested_task_ids": [
2222
]
},
{
"task_id": 2249,
"uri": "file:///mnt/VoD_storage/sample3.mp4",
"name": "Test Stalled",
"status": "Completed",
"initial_task_id": 2247,
"progress": 100,
"test_results": {
"error": 24,
"ok": 28,
"warning": 1,
"fatal": 2,
"result": "Failed"
},
"task_page": "http://172.16.1.41/projects/2/apps/1/tasks/2249",
"requested_task_ids": [
2247
]
},
{
"task_id": 2247,
"uri": "file:///mnt/VoD_storage/sample3.mp4",
"name": "Test Stalled",
"status": "Stalled",
"initial_task_id": 2247,
"requested_task_ids": [
2247
]
},
{
"task_id": 2248,
"uri": "file:///mnt/VoD_storage/sample3.mp4",
"name": "Test Stalled",
"status": "Stalled",
"initial_task_id": 2247,
"requested_task_ids": [
2247
]
}
],
}
]
}
{
"reply": [
{
"method": "TaskStatus",
"result": [
{
"task_id": 2247,
"uri": "file:///mnt/VoD_storage/sample3.mp4",
"name": "Test Stalled",
"status": "Stalled",
"initial_task_id": 2247,
"requested_task_ids": [
2247
]
},
{
"task_id": 2248,
"uri": "file:///mnt/VoD_storage/sample3.mp4",
"name": "Test Stalled",
"status": "Stalled",
"initial_task_id": 2247,
"requested_task_ids": [
2247
]
},
{
"task_id": 2249,
"uri": "file:///mnt/VoD_storage/sample3.mp4",
"name": "Test Stalled",
"status": "Completed",
"initial_task_id": 2247,
"progress": 100,
"test_results": {
"error": 24,
"ok": 28,
"warning": 1,
"fatal": 2,
"result": "Failed"
},
"task_page": "http://172.16.1.41/projects/2/apps/1/tasks/2249",
"requested_task_ids": [
2247
]
}
]
}
]
}
{
"reply": [
{
"method": "TaskStatus",
"result": [
{
"task_id": 2247,
"uri": "file:///mnt/VoD_storage/sample3.mp4",
"name": "Test Stalled",
"status": "Stalled",
"initial_task_id": 2247,
"requested_task_ids": [
2247
]
}
]
}
]
}
{
"reply": [
{
"method": "TaskStatus",
"result": [
{
"task_id": 2249,
"uri": "file:///mnt/VoD_storage/sample3.mp4",
"name": "Test Stalled",
"status": "Completed",
"initial_task_id": 2247,
"progress": 100,
"test_results": {
"error": 24,
"ok": 28,
"warning": 1,
"fatal": 2,
"result": "Failed"
},
"task_page": "http://172.16.1.41/projects/2/apps/1/tasks/2249",
"requested_task_ids": [
2247
]
}
]
}
]
}
{
"reply": [
{
"method": "TaskStatus",
"result": [
{
"task_id": 2248,
"uri": "file:///mnt/VoD_storage/sample3.mp4",
"name": "Test Stalled",
"status": "Stalled",
"initial_task_id": 2247,
"requested_task_ids": [
2248
]
}
]
}
]
}