Настройка работает нормально для небольшого количества изображений, но когда я отправляю более 300 изображений, я сталкиваюсь с серьезной медлительностью. Каждый ответ API занимает от 40 до 60 секунд на изображение, что значительно замедляет общий конвейер обработки.
Вот часть моей асинхронной функции, которая обрабатывает ответ и загружает окончательное изображение, возвращенное Bria:
Код: Выделить всё
import aiohttp
import asyncio
import re
# Bria response post-process: downloads image using the final processed URL
async def process_output_url(session, url):
if url is not None:
pattern = re.search("_(frame.*)", url)
if pattern:
imagename = pattern.group(1)
pattern1 = re.search("(.*)_frame", url)
if pattern1:
url = pattern1.group(1)
else:
print("One None data found in URL")
return None, None
async with session.get(url) as response:
data = await response.read()
return data, imagename
Я извлекаю сотни кадров из видео.
Отправляю каждый кадр (как изображение) в конечную точку удаления фона Bria.
После удаления фона я получаю ответ с URL-адресом нового изображения (размещенного на стороне Bria).
Затем я загружаю изображение, используя функцию выше.
Проблема:
После ~200 изображений время отклика резко увеличивается.
Для более 300 изображений получение и загрузка обработанных URL-адресов занимает более 20 минут.
Я подозреваю, что либо ограничение скорости, либо большая полезная нагрузка/очередь на стороне Bria.
Что я пробовал:
Ограничено параллелизм с asyncio.Semaphore.
Добавлена логика повтора для неудачных вызовов.
Проверено на наличие ответов «429 слишком много запросов» — их не видно.
Разделение запросов на куски по 50–100 — минимальное улучшение.
В чем мне нужна помощь:
Как оптимизировать или пакетировать Bria API использование для сокращения времени ответа?
Есть ли лучший способ асинхронной загрузки обработанных изображений?
Какие-либо известные ограничения скорости или рекомендации при использовании Bria API для большого объема использования?
Должен ли я добавить задержку между запросами или использовать экспоненциальную отсрочку?
Буду очень признателен за любую помощь, совет или обходной путь, поскольку я застрял в этом узком месте и не могу двигаться. вперед с остальной частью конвейера обработки видео.
Спасибо!
Мобильная версия