Диаграммы последовательностей#
В этой главе описаны общие запросы к LP и показано взаимодействие между сервисами при обработке запроса.
Более подробную информацию о запросах можно найти в справочном руководстве сервиса API.
Диаграммы создания биометрических образцов#
Диаграмма создания биометрического образца#
С помощью этого запроса можно определять лица на исходных фотографиях. Фотографии можно отправлять в стандартных форматах изображений (JPEG, PNG и т.д.) или в формате BASE64.
Более подробная информация приведена в запросе "detect faces" в справочном руководстве сервиса API.
Запрос | Описание | Тип |
---|---|---|
detect faces | Обнаруживать лица на входных изображениях, оценивать свойства лиц, извлекать биометрические образцы и сохранять их в Image Store. | POST |
Результат запроса содержит параметры обнаруженных лиц и идентификаторы всех созданных биометрических образцов.

Общая схема обработки запроса:
- Запрос на обнаружение лиц отправляется в API;
- API получает запрос, обрабатывает его и отправляет задачу в сервис Remote SDK;
- Сервис Remote SDK обрабатывает задачу в соответствии с заданными параметрами;
- Сервис Remote SDK отправляет полученные биометрические образцы в Image Store;
- С помощью Image Store биометрические образцы сохраняются в хранилище;
- Из хранилища выдается результат сохранения биометрического образца;
- Image Store выдает идентификаторы биометрических образцов и URL-адреса;
- Сервис Remote SDK отправляет идентификаторы биометрических образцов и полученные параметры лиц в сервис API;
- API генерирует и отправляет ответ.
Получение информации о биометрических образцах и их сохранение#
С помощью запроса, приведенного ниже, внешние биометрические образцы добавляются в Image Store.
Более подробная информация приведена в запросе "save samples" в справочном руководстве сервиса API.
Запрос | Описание | Тип |
---|---|---|
save samples | Сохранить внешний биометрический образец в Image Store | POST |
С помощью следующих запросов можно управлять уже существующими биометрическими образцами.
Более подробная информация приведена в разделе "samples" в справочном руководстве сервиса API.
Запрос | Описание | Тип |
---|---|---|
get sample | Получить биометрический образец по его sample_id | GET |
remove sample | Удалить биометрический образец по его sample_id | DELETE |
check to exist sample | Проверить наличие биометрического образца по его sample_id | HEAD |
Все вышеперечисленные запросы обрабатываются с помощью сервиса Image Store.

Схема обработки запросов:
- Запрос отправляется в сервис API;
- API отправляет запрос в Image Store;
- Image Store выполняет необходимые действия с хранилищем;
- Из хранилища выдаются необходимые данные;
- Сервис Image Store выдает результат в сервис API;
- API генерирует и отправляет ответ.
Более подробную информацию о запросах можно найти в документе "APIReferenceManual.html" в разделе "Samples".
Диаграммы атрибутов#
Диаграмма извлечения временных атрибутов#
Сервис Handlers получает биометрические образцы из Image Store и извлекает из них информацию.
Более подробная информация приведена в запросе"extract attributes" в справочном руководстве сервиса API.
Необходимо указать массив идентификаторов биометрических образцов.
Запрос | Описание | Тип |
---|---|---|
extract attributes | Извлечь атрибуты: БШ и базовые атрибуты (возраст, пол, этническая принадлежность) | POST |

Общая схема обработки запроса:
- Запрос на извлечение отправляется в API;
- Сервис API получает запрос, обрабатывает его и отправляет запрос в сервис Remote SDK;
- Сервис Remote SDK запрашивает биометрические образцы из Image Store;
- Сервис Image Store запрашивает биометрические образцы из хранилища;
- Из хранилища отправляются биометрические образцы;
- Сервис Image Store отправляет биометрические образцы в сервис Remote SDK;
- Сервис Remote SDK обрабатывает задачу в соответствии с заданными параметрами;
- Сервис Remote SDK отправляет БШ и базовые атрибуты в сервис Faces;
- Сервис Faces отправляет запросы на хранение временных атрибутов в базе данных Redis;
- Из базы данных Redis отправляется ответ в Faces;
- Сервис Faces отправляет ответ в сервис Remote SDK;
- Сервис Remote SDK отправляет полученные идентификаторы атрибутов, базовые атрибуты, URL-адреса атрибутов, результаты фильтрации и оценку по шкале GS в сервис API;
- Сервис API отправляет ответ.
Диаграмма создания атрибута по внешним данным#
На диаграмме показано создание атрибутов с использованием данных из внешней базы данных.
Более подробная информация приведена в разделе "attributes" в справочном руководстве сервиса API.
Запрос | Описание | Тип |
---|---|---|
create temporary attribute | Создать новые временные атрибуты. | POST |

-
Запрос на добавление новых атрибутов (биометрических шаблонов и/или базовых атрибутов) отправляется в сервис API. Все необходимые данные для создания атрибутов отправляются вместе с запросом. Дополнительно. В сервис Image Store отправляется запрос, если биометрические образцы предоставляются с БШ и/или атрибутами;
-
Сервис API отправляет запрос в сервис Image Store для сохранения полученных биометрических образцов;
-
Сервис Image Store запрашивает биометрические образцы из хранилища;
-
Из хранилища отправляются биометрические образцы;
-
Сервис Image Store отправляет биометрические образцы в сервис API;
-
Сервис API отправляет БШ и базовые атрибуты в сервис Faces;
-
Сервис Faces отправляет запросы на хранение временных атрибутов в базе данных Redis;
-
Из базы данных Redis отправляется ответ в Faces;
-
Сервис Faces отправляет ответ в сервис API;
-
Сервис API отправляет ответ.
Диаграммы получения информации об атрибутах#
С помощью следующих запросов можно получить данные об уже существующих атрибутах или удалить их.
Запрос | Описание | Тип |
---|---|---|
get temporary attributes | Получить все идентификаторы атрибутов и время их создания в соответствии с целевыми полями | GET |
get temporary attribute | Получить информацию о временном атрибуте по его attribute_id | GET |
check temporary attribute | Проверить наличие атрибута по его attribute_id | HEAD |
delete attributes | Удалить атрибут по его attribute_id | DELETE |
get temporary attribute samples | Получить все биометрические образцы временных атрибутов по attribute_id | GET |

Общая схема обработки запроса:
-
Запрос отправляется в сервис API;
-
API отправляет запрос в сервис Faces;
-
Сервис Faces отправляет запрос в базу данных Redis на получение информации о временных атрибутах;
-
Из базы данных Redis выдается запрошенная информация;
-
Сервис Faces выдает результат;
-
Сервис API выдает информацию пользователю. Если TTL атрибута истек, выдается ошибка.
Диаграммы лиц и списков#
Все запросы в этом разделе обрабатываются с помощью сервиса Faces.
Более подробная информация приведена в разделе "faces" в справочном руководстве сервиса API.
Диаграмма создания лица#
Запрос | Описание | Тип |
---|---|---|
create face | Создать новое лицо с указанным идентификатором атрибута, данными пользователя, аватаром и списками | POST |

Общая схема обработки запроса:
-
Запрос отправляется в сервис API;
-
API отправляет запрос в сервис Faces;
-
Сервис Faces отправляет запрос в базу данных Redis на получение временных атрибутов; Дополнительно. Запрос в базу данных Redis не отправляется, если для лица указаны внешние атрибуты или не установлены атрибуты.;
-
Из базы данных Redis выдается запрошенная информация;
-
Сервис Faces выдает результат;
-
Сервис Faces отправляет запрос в базу данных Faces для создания нового лица с использованием указанных данных;
-
В базе данных Faces сохраняются данные;
-
Сервис Faces выдает информацию о созданном лице;
-
Сервис API выдает информацию пользователю.
Информация о лицах и списках#
Все последующие запросы имеют похожие диаграммы последовательности.
С помощью следующих запросов можно создать лицо, получить информацию об уже существующих лицах или удалить их.
Запрос | Описание | Тип |
---|---|---|
get faces | Получить массив всех существующих лиц и их данных: face_id, external_id, user_data, create_time, avatar, account_id и списки list_id, к которым прикреплено лицо | GET |
delete faces | Удалить несколько лиц по их face_id | DELETE |
get face count | Получить количество существующих лиц по заданному фильтру | GET |
get count of faces with attributes | Получить количество лиц с атрибутами | GET |
get face | Получить данные о лице (face_id, external_id, user_data, create_time, avatar, account_id и списки list_id, к которым прикреплено лицо) по указанному face_id | GET |
patch face | Обновить лицо указанными данными: user_data, event_id, external_id, avatar | PATCH |
remove face | Удалить указанное лицо | DELETE |
check to exist a face | Проверить наличие лица по его face_id | HEAD |
put face attribute | Установить атрибут лица, изменив все данные атрибута, соответствующие указанному лицу | PUT |
get face attribute | Получить атрибуты указанного лица: пол, возраст, этническую принадлежность, время создания | GET |
delete face attribute | Удалить атрибут лица по его face_id | DELETE |
get face attribute samples | Получить информацию о биометрических образцах (по sample_id), соответствующих указанному лицу | GET |
С помощью следующих запросов можно создать списки, получить информацию об уже существующих списках или удалить их.
Запрос | Описание | Тип |
---|---|---|
create list | Создать новый пустой список. Можно указать для него user_data | POST |
get lists | Получить массив всех существующих списков со следующими данными: list_id, user_data, account_id, create_time, last_update_time | GET |
delete lists | Удалить несколько списков по их list_id | DELETE |
get list count | Получить количество существующих списков | GET |
get list | Получить информацию (list_id, user_data, account_id, create_time, last_update_time) о списке по list_id | GET |
check list existence | Проверить наличие списка с list_id | HEAD |
update list | Обновить поле user_data списка | PATCH |
delete list | Удалить список с указанным list_id | DELETE |
attach/detach faces to the list | Обновить список, прикрепив или открепив от него указанные лица | PATCH |
Ниже на диаграмме представлен процесс работы для всех перечисленных выше запросов к сервису Faces.

Общая схема обработки запроса:
- Запрос отправляется в сервис API;
- API отправляет запрос в сервис Faces;
- Сервис Faces отправляет запрос в базу данных Faces для получения информации или управления имеющимися данными;
- Из базы данных Faces выдается запрошенная информация или информация об изменениях в базе данных;
- Сервис Faces выдает результат;
- Сервис API выдает результат пользователю.
Диаграммы сравнения#
Необходимо указать эталоны и кандидаты для сравнения. Можно ограничить количество кандидатов с наибольшим значением схожести.
Запрос | Описание | Тип |
---|---|---|
matcher/faces | Позволяет сравнить указанные эталоны с указанными кандидатами. В результате будет получен уровень схожести для каждого кандидата и дополнительная информация о кандидатах | POST |
human body matching | Задачи могут отправляться в сервис, который путем сравнения ищет тела, похожие на заданные эталоны | POST |
raw matching | Можно производить расчеты схожести для входных БШ | POST |
Подробная информация приведена в разделах "matching faces", "human body matching" и "raw matching" в "APIReferenceManual.html".
Сравнение с помощью Python Matcher#
Сравнение по базе данных#
Ниже приведен пример сравнения событий (эталонов) с лицами (кандидатами).

- Запрос на сравнение отправляется в сервис API;
- Сервис API отправляет запрос в сервис Python Matcher;
- Сервис Python Matcher запрашивает эталоны из базы данных Events;
- Из базы данных Events выдаются данные;
- Сервис Python Matcher отправляет запросы на сравнение базы данных Faces;
- Сравнение выполнено;
- Из базы данных Faces выдаются соответствующие результаты;
- Сервис Python Matcher запрашивает дополнительные данные для кандидатов;
- Из базы данных Faces выдаются данные;
- Сервис Python Matcher выдает результаты в сервис API;
- Сервис API отправляет ответ.
Сравнение по списку#
Ниже приведен пример сравнения лиц (эталонов) со списком лиц (кандидатов).

- Запрос на сравнение отправляется в сервис API;
- Сервис API отправляет запрос в сервис Python Matcher;
- Сервис Python Matcher запрашивает эталоны из базы данных Faces;
- Из базы данных Faces выдаются данные;
- Сравнение выполняется в сервисе Python Matcher. Используются кешированные БШ;
- Сервис Python Matcher запрашивает дополнительные данные для кандидатов;
- Из базы данных Faces выдаются данные;
- Сервис Python Matcher выдает результаты в сервис API;
- Сервис API отправляет ответ.
Диаграммы обработчиков#
Запросы на управление обработчиками#
Обработчик определяет логику обработки входного изображения. Необходимо указать обработчик при создании нового события.
Запросы, приведенные ниже, относятся к обработчику.
Запрос | Описание | Тип |
---|---|---|
create handler | Создать обработчик | POST |
get handlers | Получить обработчики по заданным фильтрам | GET |
get handler count | Получить количество существующих обработчиков | GET |
get handler | Получить политики обработчика по handler_id | GET |
replace handler | Обновить поля обработчика. Необходимо указать handler_id. Необходимо указать более детальную информацию обо всех соответствующих политиках в теле запроса. Обновление индивидуальных параметров обработчика не допускается | PUT |
check to exist a handler | Проверить наличие обработчика с указанным handler_id | HEAD |
remove handler | Удалить обработчик по его handler_id | DELETE |
Общая диаграмма создания обработчика представлена на рисунке ниже. Все запросы обработчика имеют похожие диаграммы последовательности.

- Запрос на создание нового обработчика отправляется из сервиса API в сервис Handlers;
- Сервис Handlers обрабатывает запрос и создает обработчик;
- Сервис Handlers сохраняет обработчика в базе данных API;
- Из базы данных сервиса Handlers выдается результат;
- Сервис Handlers выдает идентификатор созданного обработчика.
Обработчик используется при создании события. Пример его использования описан в разделе "Events". Все результаты хранятся в базе данных событий Events.
Диаграммы событий#
Общая диаграмма создания события#
Событие создается после обработки изображения в соответствии с обработчиком.
Запрос | Описание | Сервис |
---|---|---|
generate events | Создать событие. Необходимо указать соответствующий ID обработчика (handler_id) или указать политики для динамического обработчика и указать обрабатываемые изображения. Необходимо установить дополнительные параметры и данные для созданного события. | POST |
Диаграмма последовательности для создания нового события будет отличаться в зависимости от указанных политик обработчика.
На приведенной ниже диаграмме последовательности показан общий процесс создания нового события и приведены только общие точки входа для выполнения политик.

- Сервис API отправляет запрос на создание нового события в сервис Handlers;
- Сервис Handlers получает соответствующий обработчик из базы данных Handlers;
- База данных Handlers отправляет обработчик в сервис Handlers;
- "detect_policy" и "extract_policy" обрабатываются сервисом Remote SDK. Полученные биометрические образцы и атрибуты хранятся в ОЗУ;
-
"match_policy" обрабатывается в соответствии с установленными фильтрами. Биометрические шаблоны, полученные при выполнении "extract_policy", предоставляются в виде эталонов для сравнения. Сравнение можно выполнить несколькими способами:
-
Лица установлены в качестве кандидатов. Сравнение выполняется с использованием БД Faces. В фильтрах можно указать необходимые списки с лицами.
- События устанавливаются в качестве кандидатов. Сравнение выполняется с использованием БД Events.
-
Атрибуты устанавливаются в качестве кандидатов. Сравнение выполняется с использованием БД Redis.
-
"conditional_tags_policy" обрабатывается сервисом Handlers;
-
"storage_policy" обрабатывается в соответствии с указанными данными:
-
Биометрические образцы лиц, тел и исходные изображения хранятся в сервисе Image Store;
- Атрибуты создаются и сохраняются в базе данных Redis сервисом Faces;
- Лица создаются и сохраняются в базе данных Faces сервиса Faces. Их также можно привязать к спискам с помощью политики "link_to_lists_policy";
- События сохраняются в базе данных Events сервисом Events;
-
Уведомления отправляются через pub/sub в Redis (см. раздел "Сервис Sender").
-
Сервис Handlers выдает результаты в сервис API.
Получение статистики по событиям и информации о событиях#
Политика | Описание | Сервис |
---|---|---|
get statistics on events | Получить статистику по событиям. С помощью группы целевых полей (target) можно агрегировать события в соответствии с указанными агрегаторами: количество элементов, максимальное или минимальное значение, среднее значение, группировка. Также можно применять фильтры и периоды для выбора событий, которые следует агрегировать. Также возможна группировка по частоте или по временным интервалам. | POST |
get events | Получить все события, удовлетворяющие указанным фильтрам. В фильтрах вы можете установить значения одного или нескольких полей событий. С помощью параметра target можно выбрать поля, которые необходимо получить в ответ. Можно оставить пустым поле запроса target. В этом случае будут показаны все данные о событиях. Также можно установить параметры сортировки, количество событий на странице и количество страниц. Если create_time__gte не задано, по умолчанию устанавливается один месяц |
GET |
get event | Получить все поля для события. Для запроса необходимо указать event_id. | GET |
check event existence | Проверить наличие указанного события. Для запроса необходимо указать event_id. | HEAD |
На диаграмме последовательности показана обработка запроса.

- API получает запрос к сервису Events;
- API отправляет запрос к сервису Events;
- Сервис Events получает необходимые данные из базы данных;
- Из базы данных выдается результат;
- Сервис Events выдает результаты;
- Сервис API выдает результаты.
Диаграммы задач#
В данном разделе приведены диаграммы последовательности выполнения задач.
В разделе "Общая диаграмма создания и выполнения задачи" приведен общий процесс обработки задач. Для некоторых задач процесс может отличаться. Например, для задачи Clustering создается только одна подзадача и используется только один "рабочий процесс". Для таких задач приведены отдельные комментарии.
Общая диаграмма создания и выполнения задачи#
Диаграмма общего процесса создания и выполнения задачи представлена ниже.
Обратите внимание, что "рабочий процесс" Tasks постоянно находится в ожидании получения каких-либо данных. У сервиса есть определенный приоритет выполнения работ, а именно:
-
Проверка не нужно ли отменить текущую задачу/подзадачу (не отражено в диаграмме).
-
Запросы на разделение на подзадачи.
-
Запросы на объединение результатов.
-
Запросы на обработку подзадач.
Это означает, что "рабочий процесс" Tasks не будет обрабатывать запрос на подзадачу, пока не выполнит проверку отмены текущей задачи.

Начало создания задачи#
В данном разделе описан процесс начала создания задачи.
-
Сервис API получает запрос на создание задачи.
-
Сервис API отправляет запрос в сервис Tasks.
-
Сервис Tasks выполняет валидацию задачи, создает её и готовится к её обработке. На данном этапе сервис Tasks может выполнить дополнительные действия, например, получить "descriptor_id" для выполнения задачи "Additional extraction".
-
Сервис Tasks отправляет данные о создаваемой задаче в БД Tasks.
-
Сервис Tasks получает ответ.
-
Сервис Tasks отправляет идентификатор задачи "task_id" в сервис API.
-
Пользователь получает идентификатор задачи, т.е. сервис API выдает идентификатор созданной задачи и не дожидается завершения выполнения задачи. По данному идентификатору пользователь может оценить статус выполнения задачи.
Для получения отчета со статусом выполнения задачи и выполнения других действий с задачей необходимо использовать идентификатор задачи. Соответствующие запросы перечислены в разделе "Информация о задачах".
Разбиение задачи на подзадачи#
В данном разделе описан процесс разбиения задачи на подзадачи. Если для какой-то задачи предполагается только одна подзадача (например, задача Clustering), то задача разобьется на одну подзадачу согласно нижеописанному процессу.
- Сервис Tasks отправляет данные в Redis.
Сервис Tasks начинает ожидать появления подзадач в Redis.
"Рабочий процесс" Tasks ожидает появления данных в Redis для разбиения их на подзадачи.
-
"Рабочий процесс" Tasks получает данные из Redis.
-
"Рабочий процесс" Tasks выполняет процесс разделения на подзадачи.
-
"Рабочий процесс" Tasks отправляет подзадачи обратно в Redis.
-
Сервис Tasks получает подзадачи.
-
Сервис Tasks сохраняет информацию о подзадачах в БД Tasks.
-
Сервис Tasks отправляет подзадачи в Redis.
Обработка каждой подзадачи#
В данном разделе описан общий процесс обработки подзадачи. Для каждой задачи свой процесс обработки, описанный в соответствующем разделе ниже.
Сервис Tasks начинает ожидать появления сообщения о начале обработки подзадачи в Redis.
"Рабочий процесс" Tasks ожидает появления данных в Redis для обработки подзадачи.
-
"Рабочий процесс" Tasks получает данные из Redis.
-
"Рабочий процесс" Tasks начинает обрабатывать подзадачу.
-
"Рабочий процесс" Tasks отправляет сообщение в Redis о том, что обработка началась.
-
Сервис Tasks получает сообщение о начале обработки.
-
Сервис Tasks обновляет информацию о задаче БД Tasks.
Сервис Tasks начинает ожидать появления результата.
-
"Рабочий процесс" Tasks сохраняет отчет о задаче в сервис Image Store.
-
Сервис Image Store отправляет запрос в хранилище на сохранение отчета.
Если сервис Image Store отключен, то отчет сохраняться не будет.
-
Сервис Image Store получает ответ от сохранении.
-
Сервис Image Store возвращает ответ "рабочему процессу".
-
"Рабочий процесс" Tasks отправляет сообщение в Redis о том, что подзадача была обработана или о том, что во время обработки произошла какая-то ошибка.
-
Сервис Tasks считывает соответствующее сообщение из Redis.
-
Сервис Tasks обновляет информацию о задаче БД Tasks.
-
После обработки последней подзадачи, сервис Tasks обновляет информацию о задаче БД Tasks.
Объединение результатов и завершение обработки#
В данном разделе описан общий процесс объединения результатов и завершения обработки. Если для какой-то задачи предполагается только одна подзадача (например, задача Clustering), то объединение результатов выполняться не будет. См. раздел "Завершение обработки задачи" для определенной задачи.
- Сервис Tasks создает внутреннюю задачу на объединение всех результатов и отправляет эту задачу в Redis.
Сервис Tasks начинает ожидать появления результата.
"Рабочий процесс" Tasks ожидает появления задачи на объединение.
-
"Рабочий процесс" Tasks получает данные задачи на объединение.
-
"Рабочий процесс" Tasks объединяет результаты всех подзадач.
-
"Рабочий процесс" сохраняет отчет о задаче в сервис Image Store.
-
Сервис Image Store отправляет запрос в хранилище на сохранение отчета.
Если сервис Image Store отключен, то отчет сохраняться не будет.
-
Сервис Image Store получает ответ от сохранении.
-
Сервис Image Store возвращает ответ сервису "рабочему процессу".
-
"Рабочий процесс" Tasks отправляет результат объединения в Redis.
-
Сервис Tasks считывает результат объединения из Redis.
-
Сервис Tasks обновляет данные о задаче в БД Tasks.
-
Сервис Tasks обновляет статус задачи в БД Tasks.
Общая диаграмма отмены задач#
Диаграмма общего процесса отмены задачи представлена ниже.

-
Пользователь отправляет запрос на отмену задачи в сервис API.
-
Сервис API направляет запрос на отмену задачи в сервис Tasks.
-
Сервис API возвращает ответ, что был активирован процесс отмены задачи.
-
Сервис Tasks обновляет статус задачи и её незавершенных подзадач на "cancelled" в БД Tasks.
-
Сервис Tasks получает ответ.
-
Сервис Tasks удаляет записи в Redis, которые относятся к отменяемой задаче.
-
Сервис Tasks добавляет запись в Redis Stream о том, что задача должна быть отменена, если есть задачи, статус которых находится в "in_progress".
-
"Рабочий процесс" Tasks обнаруживает запись на отмену в Redis Streams и удаляет её.
"Рабочий процесс" Tasks выполняет проверку наличия записей на протяжении всей обработки.
-
"Рабочий процесс" Tasks отменяет обработку задачи.
-
Сервис Tasks получает результат отмены из Redis.
Redis используется для хранения данных, включая записи, которые представлены как потоки событий в Redis Streams.
На данном этапе задача считается полностью отмененной, т.е. в ответах на запросы типа "get task" будет возвращен статус "2" ("cancelled").
Диаграмма задачи Clustering#
Запрос | Описание | Метод |
---|---|---|
clustering task | Создать задачу Clustering для лиц или событий в соответствии с заданными фильтрами. | POST |
Создание задачи Clustering#
Создание задачи выполняется стандартным способ, описанным в разделе "Начало создания задачи" в разделе с общей диаграммой работы сервиса Tasks.
Разбиение задачи Clustering на подзадачу#
Для этого типа задач создается одна подзадача. Подзадача содержит фильтры, в соответствии с которыми выбираются лица или события. Подзадача обрабатывается одним "рабочим процессом".
См. "Разделение задачи на подзадачи" в разделе с общей диаграммой работы сервиса Tasks.
Обработка подзадачи Clustering#
Обработка подзадачи Clustering зависит от объектов (лиц или событий), указанных в запросе.
Общий процесс работы для обработки подзадачи показан ниже.

-
"Рабочий процесс" Tasks получает данные из Redis.
-
Лица: "Рабочий процесс" Tasks отправляет запрос в сервис Faces. "Рабочий процесс" запрашивает все необходимые идентификаторы атрибутов в соответствии с фильтрами, указанными в подзадаче.
-
Лица: Сервис Faces отправляет запрос в БД Faces.
-
Лица: Сервис Faces получает ответ.
-
Лица: Сервис Faces отправляет идентификаторы "рабочему процессу" Tasks.
-
События: "Рабочий процесс" Tasks отправляет запрос в сервис Events. "Рабочий процесс" запрашивает все необходимые идентификаторы атрибутов в соответствии с фильтрами, указанными в подзадаче.
-
События: Сервис Events отправляет запрос в БД Events.
-
События: Сервис Events получает ответ.
-
События: Сервис Events отправляет данные "рабочему процессу" Tasks.
-
Запрос на сравнение "рабочего процесса" Tasks. Обработка запросов выполняется по одной из схем, описанных в разделе "Диаграммы сравнения".
-
Сервис Python Matcher отправляет результаты "Рабочему процессу" Tasks.
-
Сервис Tasks сохраняет отчет о задаче в сервис Image Store.
-
Сервис Image Store отправляет запрос в хранилище на сохранение отчета.
-
Сервис Image Store получает ответ от сохранении.
-
Сервис Image Store возвращает ответ сервису Tasks.
-
"Рабочий процесс" Tasks отправляет результат в Redis.
Завершение обработки задачи Clustering#
Далее сервис Tasks получает результат из Redis и обновляет статус задачи в БД Tasks.
Диаграммы задачи Linker#
Запрос | Описание | Метод |
---|---|---|
linker task | Создать задачу Linker. | POST |
Создание задачи Linker#
Задачу Linker можно создать для объектов лиц и событий. Процесс создания задачи Linker зависит от типа объекта.
Прикрепление лиц к списку

-
Сервис API получает запрос на создание задачи.
-
Сервис API отправляет запрос в сервис Tasks.
-
Сервис Tasks создает задачу.
-
Сервис Tasks отправляет информацию в базу данных Tasks.
-
Из базы данных Tasks выдается идентификатор задачи.
-
Идентификатор задачи отправляется в сервис API.
-
Сервис API отправляет в ответ идентификатор задачи.
-
Дополнительно. При указании в запросе идентификатора списка, сервис Tasks проверяет наличие списка.
-
Дополнительно. Сервис Faces проверяет наличие списка в базе данных Faces.
-
Дополнительно. Из базы данных Faces отправляется ответ.
-
Дополнительно. Сервис Faces отправляет ответ в сервис Tasks.
-
Дополнительно. Если указанный список не существует или в запросе указано создание нового списка, сервис Tasks отправляет запрос на создание нового списка.
-
Дополнительно. Faces создает список в базе данных Faces.
-
Дополнительно. Из базы данных Faces отправляется ответ.
-
Дополнительно. Сервис Faces отправляет ответ в сервис Tasks.
-
Сервис Tasks отправляет данные в Redis.
Прикрепление лиц, созданных на основе событий, к списку

-
Сервис API получает запрос на создание задачи.
-
Сервис API отправляет запрос в сервис Tasks.
-
Сервис Tasks создает задачу.
-
Сервис Tasks отправляют информацию в базу данных Tasks.
-
Из базы данных Tasks выдается идентификатор задачи.
-
Идентификатор задачи отправляется в сервис API.
-
Сервис API отправляет в ответ идентификатор задачи.
-
Дополнительно. При указании в запросе идентификатора списка, сервис Tasks проверяет наличие списка;
-
Дополнительно. Сервис Faces проверяет наличие списка в базе данных Faces;
-
Дополнительно. Из базы данных Faces отправляется ответ;
-
Дополнительно. Сервис Faces отправляет ответ в сервис Tasks;
-
Дополнительно. Если указанный список не существует или в запросе указано создание нового списка, сервис Tasks отправляет запрос на создание нового списка;
-
Дополнительно. Faces создает список в базе данных Faces;
-
Дополнительно. Из базы данных Faces отправляется ответ;
-
Дополнительно. Сервис Faces отправляет ответ в сервис Tasks;
-
Сервис Tasks получает идентификаторы лиц и идентификаторы атрибутов из сервиса Events;
-
Сервис Events получает данные из базы данных Events;
-
Из базы данных отправляется ответ;
-
Сервис Faces отправляет идентификаторы в сервис Tasks;
-
Сервис Tasks проверяет наличие лиц в сервисе Faces;
-
Сервис Faces отправляет запрос в базу данных Faces;
-
Из базы данных Faces отправляется информация о существовании лиц;
-
Сервис Faces отправляет данные в сервис Tasks;
-
Наличие лиц в базе данных Faces При наличии лица для события сервис Tasks проверяет, чтобы идентификатор атрибута лица совпадал с идентификатором атрибута события;
-
Сервис Faces отправляет запрос в базу данных Faces;
-
Из базы данных Faces отправляются идентификаторы атрибутов;
-
Сервис Faces отправляет идентификаторы атрибутов в сервис Tasks. Если идентификаторы атрибутов для существующего лица и события не совпадают, выдается ошибка "28009: Attribute is not equal";
-
Лица отсутствуют в базе данных Faces Если в базе данных Faces нет лиц с указанными идентификаторами, сервис Tasks отправляет запрос на создание новых лиц в базе данных Faces;
-
Сервис Faces отправляет запрос в базу данных Faces;
-
Из базы данных Faces отправляются результаты создания лиц;
-
Сервис Faces отправляет ответ в сервис Tasks;
-
Сервис Tasks отправляет данные в Redis.
Разбиение задачи Linker на подзадачи#
Для выполнения задачи может использоваться несколько "рабочих процессов". См. "Разделение задачи на подзадачи" в разделе с общей диаграммой работы сервиса Tasks.
Обработка подзадач Linker#
Общий процесс работы для обработки каждой подзадачи показан ниже.

-
"Рабочий процесс" Tasks получает данные из Redis.
-
"Рабочий процесс" Tasks запрашивает лица в сервисе Faces в соответствии с полученными идентификаторами лиц.
-
Сервис Faces запрашивает лица в базе данных Faces.
-
Из базы данных отправляются лица в сервис Faces.
-
Сервис Faces отправляет лица "рабочему процессу" Tasks.
-
"Рабочий процесс" Tasks отправляет запросы на прикрепление лиц к указанному списку.
-
Сервис Faces отправляет запросы на прикрепление к базе данных.
-
Из базы данных отправляется результат прикрепления в сервис Faces.
-
Сервис Faces отправляет результат "рабочему процессу" Tasks.
-
"Рабочий процесс" Tasks формирует отчет на основании результатов подзадачи и сохраняет его в сервисе Image Store.
-
Сервис Image Store сохраняет отчет в хранилище.
-
Из хранилища отправляется результат хранения. Результат имеет свой идентификатор.
-
Сервис Image Store выдает результат "рабочему процессу" Tasks.
-
"Рабочий процесс" Tasks отправляет результат в Redis.
Завершение обработки задачи Linker#
Далее выполняется объединение результатов подзадач и отправка общего отчета в Image Store. См. "Объединение результатов и завершение обработки" в разделе с общей диаграммой работы сервиса Tasks.
Диаграмма задачи Garbage collection#
Запрос | Описание | Метод |
---|---|---|
garbage collection task | Создать задачу на удаление атрибутов, по заданному фильтру времени создания. Удаляются только те атрибуты, которые не прикреплены ни к одному лицу. С помощью этой задачи можно удалить неиспользуемые данные из базы данных Faces. | POST |
Создание задачи Garbage collection#
Создание задачи выполняется стандартным способ, описанным в разделе "Начало создания задачи" в разделе с общей диаграммой работы сервиса Tasks. Единственным отличием является то, что задачу Garbage collection можно создать не только через сервис API, но и через сервис Admin или Tasks.
Разбиение задачи Garbage collection на подзадачи#
Далее выполняется разделение задачи на подзадачи. Каждая подзадача содержит массив идентификаторов атрибутов. См. "Разделение задачи на подзадачи" в разделе с общей диаграммой работы сервиса Tasks.
Обработка подзадачи Garbage collection#
Общий процесс работы для обработки каждой подзадачи показан ниже.

-
"Рабочий процесс" Tasks получает данные из Redis.
-
Удаление лиц или БШ лиц. В "рабочем процессе" Tasks есть массив идентификаторов атрибутов, которые необходимо удалить. "Рабочий процесс" Tasks запрашивает удаление временных атрибутов и соответствующих БШ в сервисе Faces.
-
Сервис Faces отправляет запрос в базу данных Faces на удаление атрибутов с указанными идентификаторами.
-
Сервис Faces получает ответ.
-
Сервис Faces отправляет ответ "рабочему процессу" Tasks.
-
Удаление событий или БШ событий. В "рабочем процессе" Tasks есть массив идентификаторов атрибутов, которые необходимо удалить. "Рабочий процесс" Tasks запрашивает удаление временных атрибутов и соответствующих БШ в сервисе Events.
-
Сервис Events отправляет запрос в базу данных Events на удаление атрибутов с указанными идентификаторами.
-
Сервис Events получает ответ.
-
Сервис Events отправляет ответ "рабочему процессу" Tasks.
-
"Рабочий процесс" Tasks формирует отчет на основании результатов подзадачи и сохраняет его в сервисе Image Store.
-
Сервис Image Store сохраняет отчет в хранилище.
-
Из хранилища отправляется результат хранения. Результат имеет свой идентификатор.
-
Сервис Image Store выдает результат "рабочему процессу" Tasks.
-
"Рабочий процесс" Tasks отправляет результат в Redis.
Завершение обработки задачи Garbage collection#
Далее выполняется объединение результатов подзадач и отправка отчета в Image Store. См. "Объединение результатов и завершение обработки" в разделе с общей диаграммой работы сервиса Tasks.
Диаграмма задачи Reporter#
Запрос | Описание | Метод |
---|---|---|
reporter task | Создать отчет для задачи Clustering. Отчет в формате CSV. Можно указать столбцы, которые необходимо добавить в отчет. Отчет находится в ZIP-архиве и содержит изображения аватаров для каждого объекта в кластере. | POST |
Создание задачи Reporter#
Создание задачи выполняется стандартным способ, описанным в разделе "Начало создания задачи" в разделе с общей диаграммой работы сервиса Tasks.
Разбиение задачи Garbage collection на подзадачу#
Для этого типа задач создается одна подзадача. Подзадача содержит фильтры для данных, которые необходимо получить для включения в отчет. См. "Разделение задачи на подзадачи" в разделе с общей диаграммой работы сервиса Tasks.
Обработка задачи Reporter#
Обработка запроса зависит от данных, хранящихся в отчете о кластеризации. Если отчет был создан для лиц, данные лица будут запрошены из сервиса Faces и добавлены в отчет. Если отчет был создан для событий, данные события будут запрошены из сервиса Events и добавлены в отчет.
Общий процесс работы для обработки подзадачи показан ниже.

-
"Рабочий процесс" Tasks получение данных из Redis;
-
"Рабочий процесс" Tasks запрашивает отчет о кластеризации в Image Store;
-
Сервис Image Store запрашивает отчет из хранилища;
-
Из хранилища отправляется ответ;
-
Сервис Image Store отправляет отчет;
-
Отчет по лицам. "Рабочий процесс" Tasks получает все идентификаторы лица из кластера и запрашивает дополнительные данные лица из сервиса Faces. Запрошенные данные зависят от столбцов, указанных в запросе;
-
Сервис Faces запрашивает данные из базы данных Faces;
-
Из базы данных Faces отправляются необходимые данные;
-
Сервис Faces отправляет данные "рабочему процессу" Tasks;
-
Отчет по событиям. "Рабочий процесс" Tasks запрашивает дополнительные данные о событиях из сервиса Events. Запрошенные данные зависят от столбцов, указанных в запросе;
-
Сервис Events запрашивает данные из базы данных Events;
-
Из базы данных Events отправляются необходимые данные;
-
Сервис Events отправляет данные "рабочему процессу" Tasks;
-
"Рабочий процесс" запрашивает изображение аватара для каждого лица или события. Изображение для лица указывается в поле "аватар" базы данных Faces. Его можно хранить в хранилище Image Store или любом другом. Изображение для события – это соответствующий биометрический образец из хранилища Image Store;
-
Image Store запрашивает изображение из хранилища;
-
Из хранилища отправляется изображение;
-
Из сервиса Image Store отправляется изображение;
-
Из "рабочего процесса" отправляется отчет в Image Store;
-
С помощью Image Store отчет сохраняется в хранилище;
-
Хранилище отправляет ответ о сохранении;
-
Сервис Image Store отправляет ответ "рабочему процессу" Tasks;
-
"Рабочий процесс" Tasks отправляет результат в Redis.
Завершение обработки задачи Reporter#
Далее сервис Tasks получает результат из Redis и обновляет статус задачи в БД Tasks.
Диаграмма задачи Exporter#
Запрос | Описание | Метод |
---|---|---|
exporter task | Собрать данные о событиях/лицах и экспортировать в файл CSV. Экспортированный CSV файл находится в ZIP-архиве и содержит изображения аватаров для каждого объекта. | POST |
Создание задачи Exporter#
Создание задачи выполняется стандартным способ, описанным в разделе "Начало создания задачи" в разделе с общей диаграммой работы сервиса Tasks.
Разбиение задачи Exporter на подзадачу#
Для этого типа задач создается одна подзадача. См. "Разделение задачи на подзадачи" в разделе с общей диаграммой работы сервиса Tasks.
Обработка подзадачи Exporter#
Общий процесс работы для обработки подзадачи показан ниже.

-
"Рабочий процесс" Tasks получение данных из Redis;
-
Экспорт данных для лиц. "Рабочий процесс" Tasks получает все идентификаторы лица и запрашивает дополнительные данные лица из сервиса Faces. Запрошенные данные зависят от столбцов, указанных в запросе;
-
Сервис Faces запрашивает данные из базы данных Faces;
-
Из базы данных Faces отправляются необходимые данные;
-
Сервис Faces отправляет данные "рабочему процессу" Tasks;
-
Экспорт данных для событий. "Рабочий процесс" Tasks запрашивает дополнительные данные о событиях из сервиса Events. Запрошенные данные зависят от столбцов, указанных в запросе;
-
Сервис Events запрашивает данные из базы данных Events;
-
Из базы данных Events отправляются необходимые данные;
-
Сервис Events отправляет данные "рабочему процессу" Tasks;
-
"Рабочий процесс" запрашивает изображение аватара для каждого лица или события. Изображение для лица указывается в поле "аватар" базы данных Faces. Его можно хранить в хранилище Image Store или любом другом. Изображение для события – это соответствующий образец из хранилища Image Store;
-
Image Store запрашивает изображение из хранилища;
-
Из хранилища отправляется изображение;
-
Из сервиса Image Store отправляется изображение;
-
С "рабочего процесса" отправляются экспортированные данные в Image Store;
-
С помощью Image Store отчет сохраняются экспортированные данные в хранилище;
-
Хранилище отправляет ответ о сохранении;
-
Сервис Image Store отправляет ответ "рабочему процессу" Tasks;
-
"Рабочий процесс" Tasks отправляет результат в Redis.
Завершение обработки задачи Exporter#
Далее сервис Tasks получает результат из Redis и обновляет статус задачи в БД Tasks.
Диаграмма задачи Cross-matching#
Запрос | Описание | Метод |
---|---|---|
cross-matching task | Создать задачу Cross-matching. С помощью данной задачи можно сравнить события и лица по заданным фильтрам. Лица и события могут быть указаны как эталоны и как кандидаты. Можно задать дополнительные фильтры, как для эталонов, так и для кандидатов. | POST |
Создание задачи Cross-matching#
Создание задачи выполняется стандартным способ, описанным в разделе "Начало создания задачи" в разделе с общей диаграммой работы сервиса Tasks.
Разбиение задачи Cross-matching на подзадачу#
Для этого типа задач создается одна подзадача. Подзадача содержит все необходимые фильтры эталонов и кандидатов. См. "Разделение задачи на подзадачи" в разделе с общей диаграммой работы сервиса Tasks.
Обработка подзадач Cross-matching#
Выполнение подзадач Cross-matching может варьироваться в зависимости от указанных эталонов и кандидатов.
Их можно указать с помощью лиц и/или событий. Далее на диаграммах запросы к сервисам Faces и Events отмечены как альтернативные. Запросы к сервису Faces используются, когда лица заданы в качестве эталонов или кандидатов. Запросы к сервису Events используются, когда события заданы в качестве эталонов или кандидатов.
Обработка задачи Clustering зависит от выбранных объектов (лиц или событий).
Общий процесс работы для обработки каждой подзадачи показан ниже.

-
"Рабочий процесс" Tasks получение данных из Redis;
-
Лица заданы в качестве эталонов или кандидатов. "Рабочий процесс" Tasks отправляет запрос в сервис Faces для получения идентификаторов атрибутов для лиц. Лица отбираются согласно заданным фильтрам;
-
Сервис Faces запрашивает идентификаторы в базе данных Faces;
-
Из базы данных Faces отправляются идентификаторы атрибутов;
-
Сервис Faces отправляет идентификаторы атрибутов "рабочему процессу" Tasks;
-
События заданы в качестве эталонов или кандидатов. "Рабочий процесс" Tasks отправляет запрос в сервис Events для получения идентификаторов атрибутов для событий. События отбираются согласно заданным фильтрам;
-
Сервис Events запрашивает идентификаторы событий в базе данных Events;
-
Из базы данных отправляются необходимые идентификаторы;
-
Сервис Events отправляет идентификаторы "рабочему процессу" Tasks;
-
Запрос на сравнение "рабочего процесса" Tasks. Обработка запросов выполняется по одной из схем, описанных в разделе "Диаграммы сравнения";
-
Сервис Python Matcher отправляет результаты.
-
Из "рабочего процесса" отправляется отчет в Image Store;
-
С помощью Image Store отчет сохраняется в хранилище;
-
Хранилище отправляет ответ о сохранении;
-
Сервис Image Store отправляет ответ "рабочему процессу" Tasks;
-
"Рабочий процесс" Tasks отправляет результат в Redis.
Завершение обработки задачи Cross-matching#
Далее сервис Tasks получает результат из Redis и обновляет статус задачи в БД Tasks.
Диаграмма задачи Estimator#
Запрос | Описание | Метод |
---|---|---|
estimator task | Создать задачу Estimator. С помощью данной задачи можно выполнять пакетную обработку изображений с указанием заданных политик. | POST |
Создание задачи Estimator#
Создание задачи выполняется стандартным способ, описанным в разделе "Начало создания задачи" в разделе с общей диаграммой работы сервиса Tasks.
Разбиение задачи Estimator на подзадачу#
Для этого типа задач создается одна подзадача. Подзадача содержит все необходимые данные. См. "Разделение задачи на подзадачи" в разделе с общей диаграммой работы сервиса Tasks.
Обработка подзадачи Estimator#
Общий процесс работы для обработки подзадачи показан ниже.

-
"Рабочий процесс" Tasks получение данных из Redis.
-
"Рабочий процесс" запрашивает пакет изображений из следующих источников:
-
сервиса Image Store в ZIP-архиве если в качестве источника изображений выбран тип "zip";
- хранилища S3 если в качестве источника изображений выбран тип "s3";
- FTP-сервера если в качестве источника изображений выбран тип "ftp";
- хранилища Samba если в качестве источника изображений выбран тип "samba";
-
директории сетевого диска, которая смонтирована на локальный диск и синхронизирована с директорией в контейнерах сервиса Tasks и его "рабочего процесса" (см. подробное описание в разделе "Задача Estimator").
-
Обработка параметров, указанных в запросе - авторизация, использование префиксов и т.п.
-
Image Store/S3/Сетевой диск/FTP-сервер/Samba отправляет изображения "рабочему процессу" Tasks.
-
Есть handler_id. "Рабочий процесс" Tasks отправляет запрос на получение идентификатора существующего обработчика в базу данных Handlers.
-
Есть handler_id. Из базы данных Handlers "рабочему процессу" приходит ответ с идентификатором handler_id.
-
Есть handler_id. "Рабочий процесс" отправляет запрос в сервис Handlers для обработки handler_id.
-
Есть handler_id. Сервис Handlers обрабатывает пакет изображений по полученному handler_id в соответствии с заданными политиками (см. диаграмму создания события).
-
Есть handler_id. Полученный ответ возвращается "рабочему процессу" Tasks.
-
Нет handler_id. "Рабочий процесс" Tasks отправляет запрос на обработку политик, указанных прямо в запросе, в сервис Handlers.
-
Нет handler_id. Сервис Handlers обрабатывает пакет изображений в соответствии с заданными политиками (см. диаграмму создания события).
-
Нет handler_id. Полученный ответ возвращается "рабочему процессу" Tasks.
-
Из "рабочего процесса" отправляется отчет в Image Store;
-
С помощью Image Store отчет сохраняется в хранилище;
-
Хранилище отправляет ответ о сохранении;
-
Сервис Image Store отправляет ответ "рабочему процессу" Tasks;
-
"Рабочий процесс" Tasks отправляет результат в Redis.
Завершение обработки задачи Estimator#
Далее сервис Tasks получает результат из Redis и обновляет статус задачи в БД Tasks.
Диаграммы задачи Additional extraction#
Запрос | Описание | Метод |
---|---|---|
create additional extraction task | Извлечь все существующие биометрические шаблоны с использованием новой версии нейросети. | POST |
Создание задачи Additional extraction#
Запрос отправляется с помощью сервиса Admin. Диаграмма создания задачи приведена ниже.

-
Администратор отправляет запрос в сервис Admin с помощью пользовательского интерфейса администратора или любого другого приложения.
-
Сервис Admin отправляет запрос в сервис Tasks.
-
Сервис Tasks отправляет запрос к сервису Faces на получение идентификаторов биометрических шаблонов, которые не были извлечены с помощью новой нейросети.
-
Сервис Faces запрашивает необходимые идентификаторы.
-
Сервис Faces получает необходимые идентификаторы.
-
Сервис Faces отправляет идентификаторы в сервис Tasks.
-
Сервис Tasks отправляет данные о создаваемой задаче в базу данных Tasks
-
Сервис Tasks получает "task_id".
-
Сервис Tasks отправляет идентификатор задачи в сервис Admin.
-
Сервис Admin отправляет созданный идентификатор задачи в пользовательский интерфейс или приложение, используемое администратором.
-
Сервис Tasks отправляет данные в Redis, откуда "рабочий процесс" заберет задачу на дальнейшую обработку.
Разделение задачи Additional extraction на подзадачи#
Далее выполняется разделение задачи на подзадачи. Каждая из подзадач содержит массив идентификаторов атрибутов. См. "Разделение задачи на подзадачи" в разделе с общей диаграммой работы сервиса Tasks.
Обработка подзадач Additional extraction#
Общий процесс работы для обработки каждой подзадачи показан ниже.

-
"Рабочий процесс" Tasks получает данные из Redis.
-
"Рабочий процесс" Tasks отправляет запрос в сервис Faces на получение всех требуемых биометрических шаблонов в соответствии с их идентификаторами.
-
Сервис Faces отправляет запрос в базу данных.
-
Из базы данных отправляются обратно необходимые БШ.
-
Сервис Faces отправляет БШ "рабочему процессу" Tasks.
-
Запрос на извлечение БШ отправляется в сервис Handlers.
-
Сервис Handlers запрашивает биометрические образцы для извлечения из Image Store.
-
Сервис Image Store запрашивает биометрические образцы из хранилища.
-
Сервис Image Store получает биометрические образцы из хранилища.
-
Сервис Image Store отправляет биометрические образцы в сервис Handlers.
-
Сервис Handlers отправляет запрос на извлечение БШ в сервис Remote SDK.
-
Сервис Remote SDK извлекает биометрические шаблоны.
-
Из сервиса Remote SDK отправляются извлеченные БШ.
-
Сервис Handlers отправляет БШ и базовые атрибуты в сервис Faces.
-
Сервис Faces отправляет запрос на сохранение данных в базу данных.
-
Из базы данных выдается результат сохранения данных.
-
Сервис Faces выдает результат сохранения данных.
-
Сервис Handlers отправляет результат выполнения задачи в сервис Tasks.
-
"Рабочий процесс" Tasks отправляет результат в Redis.
Описанная последовательность выполняется для каждого "рабочего процесса" Tasks.
Завершение обработки задачи Additional extraction#
Далее выполняется объединение результатов подзадач и отправка отчета в Image Store. См. "Объединение результатов и завершение обработки" в разделе с общей диаграммой работы сервиса Tasks.
Диаграммы предоставления информации о задачах#
С помощью запросов, приведенных ниже, предоставляется информация о статусе существующих задач.
Запрос | Описание | Метод |
---|---|---|
cancel task | Отменить выполнение задачи по ее task_id. | PATCH |
get tasks | Получить информацию о задачах. Можно установить фильтры для задач. | GET |
get tasks count | Получить количество задач по заданным фильтрам. | GET |
get task | Получить информацию о задаче по её task_id | GET |
get subtasks | Получить информацию обо всех подзадачах заданной задачи. | GET |
С помощью запросов, приведенных ниже, можно предоставить информацию об ошибках, возникших при обработке задач.
Запрос | Описание | Метод |
---|---|---|
get errors of task | Получить информацию обо всех ошибках заданной задачи по task_id. | GET |
get errors | Получить информацию обо всех ошибках по заданным фильтрам. | GET |
get errors count | Получить количество ошибок по заданному фильтру. | GET |
get error | Получить информацию об ошибке по task_id. | GET |
Соответствующая диаграмма представлена ниже.

-
Запрос отправляется в API.
-
Сервис API отправляет запрос в сервис на получение требуемых данных или выполнение требуемых действий.
-
Сервис Tasks отправляет запрос в базу данных Tasks на получение требуемых данных или выполнение требуемых действий.
-
Из базы данных отправляется ответ в сервис Tasks.
-
Сервис Tasks отправляет ответ в сервис API.
-
Сервис API выдает информацию.
Запрос | Описание | Метод |
---|---|---|
delete task | Удалить заданную задачу и ее результаты. | DELETE |
get task result | Получить результаты заданной задачи. | GET |

-
Запрос отправляется в API.
-
Сервис API отправляет запрос в сервис Tasks на получение требуемых данных задачи или удаление задачи.
-
Сервис Tasks отправляет запрос в базу данных Tasks на получение требуемых данных или удаление задачи.
-
Из базы данных отправляется ответ в сервис Tasks.
-
Сервис Tasks отправляет запрос в Image Store для получения или удаления результатов заданной задачи.
-
Сервис Image Store отправляет запрос в хранилище.
-
Из хранилища отправляется ответ в сервис Image Store.
-
Сервис Image Store выдает результат в сервис Tasks.
-
Сервис Tasks отправляет ответ в сервис API.
-
Сервис API отправляет ответ.
Диаграммы lambda#
Диаграмма создания lambda#
Данная диаграмма описывает общий процесс создания lambda.
Запрос | Описание | Метод |
---|---|---|
create lambda | Создать lambda. | POST |

Общая схема обработки запроса:
-
Пользователь определяет какой тип lambda ему будет нужен - Handlers-lambda или Standalone-lambda.
-
Пользователь пишет Python-код в соответствии с типом будущей lambda и требованиями к коду.
-
Пользователь переносит модуль в архив в соответствии с требованиями к архиву.
-
Пользователь выполняет запрос "create lambda" к сервису API.
-
Сервис API отправляет запрос в сервис Lambda.
-
Сервис Lambda отправляет запрос на проверку лицензии в сервис Licenses.
-
Сервис Lambda получает ответ.
-
Сервис Lambda записывает данные в БД Lambda, обновляя статус создания lambda на "waiting".
-
Сервис Lambda получает ответ.
Во время создания lambda доступна возможность получения статуса её создания с помощью запроса "get lambda status".
-
Сервис Lambda возвращает сервису API идентификатор "lambda_id".
-
Сервис API возвращает пользователю идентификатор "lambda_id".
-
Сервис Lambda добавляет дополнительные файлы и формирует новый архив.
-
Сервис Lambda сохраняет новый архив в хранилище S3.
Создание образа
-
Сервис Lambda оправляет запрос на создание образа в Kubernetes.
-
Сервис Lambda обновляет статус создания образа на "in_progress".
-
Сервис Lambda начинает отслеживать статус создания образа в Kubernetes.
Пользователь может получить статус и логи создания образа с помощью запросов "get lambda image creation status" и "get lambda image creation logs".
-
Kubernetes получает архив из хранилища S3.
-
Kubernetes создает образ.
-
Kubernetes публикует образ в Docker registry.
Настройки S3, Docker registry и Kubernetes задаются в настройках сервиса Lambda.
-
Сервис Lambda фиксирует публикацию образа.
-
Сервис Lambda обновляет статус создания образа на "completed".
Создание lambda в кластере Kubernetes
-
Сервис Lambda отправляет запрос на создание lambda в кластере Kubernetes.
-
Сервис Lambda начинает отслеживать статус создания lambda в Kubernetes.
Во время создания lambda невозможно получить статус и логи создания образа. Статус создания и логи создания lambda можно получить с помощью запросов "get lambda status" и "get lambda logs".
-
Kubernetes получает образ из Docker registry.
-
Kubernetes разворачивает полученный образ.
-
Сервис Lambda фиксирует состояние развернутого образа.
-
Сервис Lambda обновляет статус lambda на "running" в БД Lambda.
-
Сервис Lambda получает ответ.
Далее можно приступить к отправке запросов lambda.
Диаграмма обработки lambda#
Данная диаграмма описывает общий процесс обработки lambda. Процесс обработки lambda зависит от её типа - Standalone-lambda или Handlers-lambda. Для обоих типов можно выполнять запросы "proxy post request to lambda" для прямого взаимодействия с Kubernetes. Если Handlers-lambda может имитировать ответ классического обработчика, то можно выполнить запрос "generate events".

Общая схема обработки запроса:
Handlers-lambda
-
Пользователь выполняет запрос "create handler" к сервису API, указывая "handler_type" = "2" и полученный "lambda_id" (см. "Диаграмма создания lambda").
-
Сервис API отправляет запрос в сервис Handlers.
-
Сервис Handlers выполняет проверку работоспособности (healthcheck) lambda, развернутой в Kubernetes, и создает обработчик.
-
Сервис Handlers получает ответ.
-
Сервис API получает идентификатор "handler_id".
-
Пользователь получает идентификатор "handler_id".
Запрос на генерацию события
-
Пользователь выполняет запрос "generate events" к сервису API, указывая полученный на предыдущем шаге "handler_id".
-
Сервис API отправляет запрос в сервис Handlers.
-
Сервис Handlers отправляет запрос на обработку в Kubernetes.
-
В кластере Kubernetes обрабатывается пользовательский код.
Во время работы Handlers-lambda будет выполнено взаимодействие с некоторыми сервисами LUNA PLATFORM. См. раздел "Handlers-lambda" для дополнительной информации.
-
Сервис Handlers получает ответ.
-
Сервис API получает ответ.
-
Пользователь получает ответ.
Прокси-запрос
-
Пользователь выполняет запрос "proxy post request to lambda" к сервису API.
-
Сервис API отправляет запрос в сервис Lambda.
-
Сервис Lambda отправляет запрос на обработку в Kubernetes.
-
В кластере Kubernetes обрабатывается пользовательский код.
Во время работы Handlers-lambda будет выполнено взаимодействие с некоторыми сервисами LUNA PLATFORM. См. раздел "Handlers-lambda" для дополнительной информации.
-
Сервис Lambda получает ответ.
-
Сервис API получает ответ.
-
Пользователь получает ответ.
Прокси-запрос для Standalone-lambda
-
Пользователь отправляет запрос "proxy post request to lambda" к сервису API.
-
Сервис API отправляет запрос в сервис Lambda.
-
Сервис Lambda отправляет запрос на обработку в Kubernetes.
-
В кластере Kubernetes обрабатывается пользовательский код.
Во время работы Handlers-lambda будет выполнено взаимодействие с некоторыми сервисами LUNA PLATFORM. См. раздел "Standalone-lambda" для дополнительной информации.
-
Сервис Lambda получает ответ.
-
Сервис API получает ответ.
-
Пользователь получает ответ.