diff --git a/apiApp/routers/audio_management_router.py b/apiApp/routers/audio_management_router.py index 9d0997d..651ebe0 100644 --- a/apiApp/routers/audio_management_router.py +++ b/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) logger.info(f"📁 Файл найден: {file_path} (размер: {file_size} bytes)") - # Формируем запрос в GigaAM API - ИСПОЛЬЗУЕМ АСИНХРОННЫЙ ENDPOINT + # Формируем запрос в GigaAM API + # Пробуем асинхронный endpoint, если не работает - fallback на обычный 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 = { "filename": audio.filename } - # Отправляем запрос в GigaAM API - асинхронный endpoint быстро возвращает ответ import requests 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: result = response.json() task_id = result.get('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: 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" - FileAudioAPI путь: {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: - # Для асинхронного endpoint таймаут маловероятен, но обрабатываем logger.warning(f"⏱️ Таймаут при отправке задачи для {audio.filename}") except requests.exceptions.ConnectionError as e: logger.error(f"❌ Ошибка подключения к GigaAM API для {audio.filename}: {e}")