add check dublicate, add balancer
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user