Аватарка пользователя Maksim Kuznetsov
Maksim Kuznetsov

Создаём локальный видеохостинг. Часть 1: продвижение с бэкендом

Продолжаем разработку своего видеохостинга с бэкендом на FastAPI. Выделим и рассмотрим основные функции и попробуем их реализовать.

3379

Напомню цель — написать небольшой и очень простой сервер с возможностью просмотра видео на разных устройствах.

В прошлой части мы определились с тем, что попытаемся написать бэкенд на FastAPI. Выбор кажется очевиден, но сделаю пояснение.

FastApi — асинхронный веб-фреймворк. По мне асинхронность — идеальный вариант для работы с файлами и сетью, особенно при большой нагрузке.

Теперь нам потребуется работа с файлами и отдача их пользователю, в этом нам поможет документация. Пара минут чтения документации и вуаля, находим ответ на вопрос, как отдать файлы пользователю в FastApi. Теперь определимся с эндпоинтами.

Как минимум нам нужно 3 эндпоинта:

  • список всех видео,
  • страница отображения одного видео,
  • API с загрузкой файла.

Для «Список видео» и «Отображение видео» будет использован HTMLResponse и Jinja2-шаблоны.

Как можете увидеть в документации, есть FileRepsonse и StreamResponse. Особой разницы в них я не увидел, но в FileResponse есть chunk_size — видимо, размер отправляемой части в байтах. Сделаем впоследствии 2 разных эндпоинта для проверки скорости работы + разных параметров.

Это ссылка на репозиторий, в котором обновления будут появляться быстрее, чем публиковаться статьи. Но я постараюсь максимально быстро описывать случившиеся изменения.

Оставляйте коментарии и рекомендуйте, что добавить, какую технологию использовать или какие альтернативы, советы, рекомендации, мне будет очень интересно почитать.

На данный момент этот блок не поддерживается, но мы не забыли о нём!Наша команда уже занята его разработкой, он будет доступен в ближайшее время.

UPD: После тестирования я обнаружил неточность. VLC не может воспроизвести ответ через FileResponse, хотя в браузере работает. Поэтому оставим StreamResponse, но нужно будет поработать над оптимизацией для чтения из файла.

Следите за новыми постами по любимым темам

Подпишитесь на интересующие вас теги, чтобы следить за новыми постами и быть в курсе событий.

API
Python
Сервисы
Бэкенд
Пост пользователя
3379
Что думаете?
0 комментариев
Сначала интересные