Создаём локальный видеохостинг. Часть 1: продвижение с бэкендом
Продолжаем разработку своего видеохостинга с бэкендом на FastAPI. Выделим и рассмотрим основные функции и попробуем их реализовать.
4К открытий5К показов
Максим Кузнецов
Senior Python Developer в Akvelon
Напомню цель — написать небольшой и очень простой сервер с возможностью просмотра видео на разных устройствах.
В прошлой части мы определились с тем, что попытаемся написать бэкенд на FastAPI. Выбор кажется очевиден, но сделаю пояснение.
FastApi — асинхронный веб-фреймворк. По мне асинхронность — идеальный вариант для работы с файлами и сетью, особенно при большой нагрузке.
Теперь нам потребуется работа с файлами и отдача их пользователю, в этом нам поможет документация. Пара минут чтения документации и вуаля, находим ответ на вопрос, как отдать файлы пользователю в FastApi. Теперь определимся с эндпоинтами.
Как минимум нам нужно 3 эндпоинта:
- список всех видео,
- страница отображения одного видео,
- API с загрузкой файла.
Для «Список видео» и «Отображение видео» будет использован HTMLResponse и Jinja2-шаблоны.
Как можете увидеть в документации, есть FileRepsonse и StreamResponse. Особой разницы в них я не увидел, но в FileResponse есть chunk_size — видимо, размер отправляемой части в байтах. Сделаем впоследствии 2 разных эндпоинта для проверки скорости работы + разных параметров.
Это ссылка на репозиторий, в котором обновления будут появляться быстрее, чем публиковаться статьи. Но я постараюсь максимально быстро описывать случившиеся изменения.
Оставляйте коментарии и рекомендуйте, что добавить, какую технологию использовать или какие альтернативы, советы, рекомендации, мне будет очень интересно почитать.
UPD: После тестирования я обнаружил неточность. VLC не может воспроизвести ответ через FileResponse, хотя в браузере работает. Поэтому оставим StreamResponse, но нужно будет поработать над оптимизацией для чтения из файла.
4К открытий5К показов