В Cloud AI Audio API для асинхронных задач (транскрибация и диаризация) используется подход polling API.
Это значит, что клиент получает идентификатор задачи (task_id
) и периодически опрашивает сервер для получения статуса выполнения и результата.
Как это работает
-
Запуск задачи
Вы отправляете аудиофайл через POST-запрос (/do_transcribe
или /do_diarize
).
Сервер сразу отвечает статусом (например, scheduled
) и уникальным task_id
.
-
Опрос статуса
Клиент с помощью task_id
периодически выполняет GET-запрос на endpoint статуса задачи task_status/{task_id}
.
Если задача всё ещё выполняется, в ответе будет соответствующий статус.
Когда задача завершена — сервер отдаёт результат.
-
Завершение задачи вручную
В некоторых случаях предусмотрен POST-запрос /task_done/{task_id}
, чтобы явно отметить задачу как завершённую.
Пример Polling на Python
import requests
import time
API_URL = "https://api.palatine.ru/api/v1/transcribe/do_transcribe"
STATUS_URL = "https://api.palatine.ru/api/v1/transcribe/task_status/{task_id}"
TOKEN = "<YOUR_TOKEN>"
files = {"file": open("audio.mp3", "rb")}
headers = {"Authorization": f"Bearer {TOKEN}"}
# 1. Запуск задачи
response = requests.post(API_URL, files=files, headers=headers)
task_id = response.json()["task_id"]
# 2. Polling результата
while True:
status_response = requests.get(STATUS_URL.format(task_id=task_id), headers=headers)
result = status_response.json()
if result.get("task_status"): # Если задача завершена
print("Готово:", result)
break
else:
print("Задача ещё в работе, ждем 3 секунды...")
time.sleep(3)
Особенности
- Интервал опроса (например, 2-5 секунд) выбирается в зависимости от нагрузки и желаемой скорости реакции.
- В ответе статус может быть булевым флагом (
task_status: true
— задача завершена) и содержать либо результат, либо сообщение об ошибке.
- После получения результата желательно прекратить polling (чтобы не нагружать сервер).
Используйте Polling для:
- Асинхронных задач, выполнение которых может занять значительное время (например, длинные аудиофайлы).
- Обеспечения пользователя актуальной информацией о прогрессе.
Пример Polling аналогично работает и для эндпоинтов диаризации!
Responses are generated using AI and may contain mistakes.