Как стать автором
Обновить

Комментарии 8

А про самое интересное и ничего не сказано: тема async не раскрыта (у нас же async фреймворк), про возможные проблемы, если я буду раздавать файл 1G, он будет весь в память загружен или частями, нет ничего про насколько это проигрывает или выигрывает, если сравнивать с раздачей файлов через тот же nginx.

И последний параметр, который я использовал, это media_type, он указывает на MIME-тип, в данном случае multipart/form-data, указывающий, что мы ожидаем набор данных из HTML-формы.

ох, только сейчас заметил, у ответа media_type это про тип файла, в данном случае это application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

Ну это же даже меньше чем в родной справке примеров!

Сеньор программист выше очень правильно заметил про async, и размер файла, и про mime-type. Хватит уже бояться StreamingResponse - очень просто и удобно реализуется, разгружает память, процессор, сеть и прокси.

Указывая правильный MIME-тип в ответе вы подсказываете браузеру и ОС чем можно сразу открыть файл.

Я думаю как вариант тут хорошо все написанно https://stackoverflow.com/questions/73671611/how-to-stream-html-content-with-static-files-using-fastapi/73672334#73672334 по поводу StreamingResponse

Хотя конечно хотелось бы узнать и за это еще - " если я буду раздавать файл 1G, он будет весь в память загружен или частями, нет ничего про насколько это проигрывает или выигрывает, если сравнивать с раздачей файлов через тот же nginx. "

Для высоконагруженных сервисов мы делали передачу через S3: когда скачиваем - просто передаем через API подписанный URL, который экспайрится через 5 минут. А когда закачка, то клиенту тоже даем подписанный URL для закачки https://docs.aws.amazon.com/AmazonS3/latest/userguide/PresignedUrlUploadObject.html. Это все интересно, когда файлы большие, а когда маленькие, то да - проще пихать через API.

В чем смысл статьи? пересказ документации? или у FastApi нет документации? или описан очень пограничный кейс, с которым редко сталкиваешься?

Здравствуйте, статья написана с той целью, чтоб пользоваться ей сразу же после прочтения.

Соглашусь, что всё это есть в хорошей документации, но далеко не всегда нужно всё, что там дано, поэтому я сделал выжимку, без подробностей, так как в таком типе статей они не совсем уместны.

Спасибо за обратную связь! :)

Самое интересное это асинхронная передача файлов в стримах, санками. А таким образом только какие-то маленькие файлики можно передавать или для совсем небольшой нагрузки использовать.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории