Как загрузить большой файл (≥3GB) на сервер FastAPI?
Вопрос проверяет способность обрабатывать загрузку больших файлов с использованием стриминга для оптимизации памяти.
Короткий ответ
Для загрузки больших файлов FastAPI использует объект UploadFile, который позволяет обрабатывать файлы в потоковом режиме без полного чтения в память.
Длинный ответ
FastAPI предоставляет объект UploadFile для обработки файлов. Этот объект позволяет загружать файлы в потоковом режиме, что критично при работе с большими файлами, поскольку это снижает нагрузку на оперативную память.
Пример обработки большого файла:
from fastapi import FastAPI, File, UploadFile
app = FastAPI()
@app.post("/upload/")
async def upload_file(file: UploadFile):
with open(f"uploaded_{file.filename}", "wb") as buffer:
while chunk := await file.read(1024 * 1024): # Чтение файла по частям
buffer.write(chunk)
return {"filename": file.filename}
Особенности:
- Используйте file.read(size) для чтения файла по частям.
- Не забудьте обработать возможные ошибки, такие как прерывание соединения или превышение лимита размера файла.
Когда использовать:
- Для приложений, работающих с большими файлами, например, видео или большими архивами.