Browse Source

add check dublicate, add balancer

dev
poturaevpetr 1 month ago
parent
commit
cf25f364d1
  1. 34
      apiApp/routers/audio_management_router.py

34
apiApp/routers/audio_management_router.py

@ -214,7 +214,8 @@ async def process_all_pending_audio(
200 OK + {
"started_count": 15,
"pending_files": ["file1.wav", "file2.wav", ...],
"total_pending": 50
"total_pending": 50,
"skipped_duplicates": 2
}
"""
try:
@ -232,6 +233,7 @@ async def process_all_pending_audio(
"started_count": 0,
"pending_files": [],
"total_pending": 0,
"skipped_duplicates": 0,
"message": "Нет файлов без AiConclusion"
}
@ -240,6 +242,7 @@ async def process_all_pending_audio(
# Добавляем задачи в фон
started_count = 0
pending_files = []
skipped_duplicates = 0 # Счётчик дубликатов
for audio in pending_audio:
# Проверяем, что файл существует
@ -248,25 +251,46 @@ async def process_all_pending_audio(
logger.warning(f" Файл не найден на диске: {audio.filename}")
continue
# ПРОВЕРКА НА ДУБЛИКАТЫ: Проверяем, не обрабатывается ли файл уже
import requests
try:
# Проверяем статус через GigaAM API
check_url = f"{os.getenv('GIGAAM_API_URL', 'http://gigaam_api:5001')}/api/call/check-status"
check_response = requests.post(
check_url,
json={"filename": audio.filename},
timeout=5
)
if check_response.status_code == 200:
check_data = check_response.json()
if check_data.get('in_queue', False):
logger.info(f" Файл уже в очереди GigaAM: {audio.filename}")
skipped_duplicates += 1
continue
except Exception as e:
# Если проверка упала - всё равно продолжаем
logger.debug(f"Не удалось проверить статус {audio.filename}: {e}")
# Добавляем в фон (асинхронно)
# В FastAPI используем BackgroundTasks
# Но нужно создавать новую сессию для каждого таска
pending_files.append(audio.filename)
started_count += 1
# Запускаем обработку в фоне
# Используем lambda для захвата audio_id
background_tasks.add_task(
process_single_audio,
str(audio.id)
)
logger.info(f"✅ Запущено распознавание для {started_count} файлов")
if skipped_duplicates > 0:
logger.info(f" Пропущено дубликатов: {skipped_duplicates}")
return {
"started_count": started_count,
"pending_files": pending_files,
"total_pending": total_pending
"total_pending": total_pending,
"skipped_duplicates": skipped_duplicates
}
except Exception as e:

Loading…
Cancel
Save