Estoy ejecutando la aplicación FastAPI en un dispositivo integrado. El dispositivo integrado tiene recursos limitados (espacio en disco y RAM). Sin embargo, hay disponible una tarjeta SD con mucho espacio. Me gustaría cargar y almacenar un archivo grande en la tarjeta SD. La documentación de FastAPI sugiere usar el parámetro UploadFile .
Probé una aplicación simple:
from fastapi import FastAPI, File, UploadFile app = FastAPI() @app.post("/uploadfile/") async def create_upload_file(file: UploadFile = File(...)): return {"filename": file.filename} ... y después de publicar un archivo grande, recibo una respuesta con el código de estado 400 y el cuerpo {"detail": "There was an error parsing the body"} .
Estaba monitoreando el uso del disco durante el proceso de carga y vi que el espacio libre en la partición /tmp estaba disminuyendo hasta que se quedó sin espacio. Supongo que FastAPI se da cuenta de que el archivo cargado es demasiado grande para almacenarlo en la memoria y decide almacenarlo en el disco. Desafortunadamente, el disco seleccionado también es demasiado pequeño.
¿Cómo puedo seleccionar la ubicación que FastAPI usa internamente para almacenar el archivo cargado?
Puede agregar lo siguiente a su aplicación para cambiar la ubicación predeterminada de los archivos temp (usando el módulo de archivos temporales de Python ):
import tempfile tempfile.tempdir = "path/to/tempdir/here" print("Temp directory after change:", tempfile.gettempdir())