poturaevpetr 2 weeks ago
parent
commit
b8af963e9f
  1. 27
      apiApp/routers/audio_management_router.py

27
apiApp/routers/audio_management_router.py

@ -162,23 +162,38 @@ def process_audio_file(audio_id: str, db: Session):
file_size = os.path.getsize(file_path) file_size = os.path.getsize(file_path)
logger.info(f"📁 Файл найден: {file_path} (размер: {file_size} bytes)") logger.info(f"📁 Файл найден: {file_path} (размер: {file_size} bytes)")
# Формируем запрос в GigaAM API - ИСПОЛЬЗУЕМ АСИНХРОННЫЙ ENDPOINT # Формируем запрос в GigaAM API
# Пробуем асинхронный endpoint, если не работает - fallback на обычный
from apiApp.config import GIGAAM_API_URL from apiApp.config import GIGAAM_API_URL
api_url = f"{GIGAAM_API_URL}/api/call/process/async"
# Сначала пробуем асинхронный endpoint
async_api_url = f"{GIGAAM_API_URL}/api/call/process/async"
sync_api_url = f"{GIGAAM_API_URL}/api/call/process"
payload = { payload = {
"filename": audio.filename "filename": audio.filename
} }
# Отправляем запрос в GigaAM API - асинхронный endpoint быстро возвращает ответ
import requests import requests
try: try:
response = requests.post(api_url, json=payload, timeout=10) # Пробуем асинхронный endpoint
response = requests.post(async_api_url, json=payload, timeout=10)
if response.status_code == 200 or response.status_code == 202: if response.status_code == 200 or response.status_code == 202:
result = response.json() result = response.json()
task_id = result.get('task_id') task_id = result.get('task_id')
logger.info(f"✅ Задача добавлена в очередь для {audio.filename} (task_id: {task_id})") logger.info(f"✅ Задача добавлена в очередь для {audio.filename} (task_id: {task_id})")
return
# Если асинхронный endpoint вернул ошибку, пробуем синхронный
if response.status_code == 404:
logger.warning(f" Асинхронный endpoint не найден, пробуем синхронный")
response = requests.post(sync_api_url, json=payload, timeout=60)
if response.status_code == 200:
logger.info(f"✅ Запущено синхронное распознавание для {audio.filename}")
else:
logger.error(f"❌ Ошибка запуска распознавания для {audio.filename}: {response.status_code} - {response.text}")
else: else:
logger.error(f"❌ Ошибка запуска распознавания для {audio.filename}: {response.status_code} - {response.text}") logger.error(f"❌ Ошибка запуска распознавания для {audio.filename}: {response.status_code} - {response.text}")
@ -187,10 +202,10 @@ def process_audio_file(audio_id: str, db: Session):
logger.error(f"🔍 Диагностика 404:") logger.error(f"🔍 Диагностика 404:")
logger.error(f" - FileAudioAPI путь: {file_path}") logger.error(f" - FileAudioAPI путь: {file_path}")
logger.error(f" - Файл существует: {os.path.exists(file_path)}") logger.error(f" - Файл существует: {os.path.exists(file_path)}")
logger.error(f" - GigaAM API URL: {api_url}") logger.error(f" - Async URL: {async_api_url}")
logger.error(f" - Sync URL: {sync_api_url}")
except requests.exceptions.Timeout: except requests.exceptions.Timeout:
# Для асинхронного endpoint таймаут маловероятен, но обрабатываем
logger.warning(f" Таймаут при отправке задачи для {audio.filename}") logger.warning(f" Таймаут при отправке задачи для {audio.filename}")
except requests.exceptions.ConnectionError as e: except requests.exceptions.ConnectionError as e:
logger.error(f"❌ Ошибка подключения к GigaAM API для {audio.filename}: {e}") logger.error(f"❌ Ошибка подключения к GigaAM API для {audio.filename}: {e}")

Loading…
Cancel
Save