slimshadow's picture
Update app.py
d445ba5 verified
raw
history blame
1.56 kB
from fastapi import FastAPI, File, UploadFile
from fastapi.middleware.gzip import GZipMiddleware
from fastapi.responses import FileResponse
import os
import shutil
import psutil
app = FastAPI()
# Enable gzip compression
app.add_middleware(GZipMiddleware, minimum_size=1000)
# Directory to store uploaded files
UPLOAD_DIR = "/app/uploads"
os.makedirs(UPLOAD_DIR, exist_ok=True)
@app.post("/upload/")
async def upload_file(file: UploadFile = File(...)):
file_path = os.path.join(UPLOAD_DIR, file.filename)
with open(file_path, "wb") as buffer:
shutil.copyfileobj(file.file, buffer)
return {"filename": file.filename}
@app.get("/download/{filename}")
async def download_file(filename: str):
file_path = os.path.join(UPLOAD_DIR, filename)
if os.path.exists(file_path):
return FileResponse(file_path, media_type='application/octet-stream', filename=filename)
return {"error": "File not found"}
@app.get("/system/metrics")
async def get_system_metrics():
cpu_load = psutil.cpu_percent(interval=1)
memory = psutil.virtual_memory()
disk_usage = psutil.disk_usage('/')
metrics = {
"cpu_load": cpu_load,
"memory": {
"total": memory.total,
"available": memory.available,
"used": memory.used,
"percent": memory.percent
},
"disk_usage": {
"total": disk_usage.total,
"used": disk_usage.used,
"free": disk_usage.free,
"percent": disk_usage.percent
}
}
return metrics