Spaces:
Running
Running
from fastapi import FastAPI, File, UploadFile | |
from fastapi.middleware.gzip import GZipMiddleware | |
from fastapi.responses import FileResponse | |
from fastapi.staticfiles import StaticFiles | |
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) | |
# Mount static files directory | |
app.mount("/static", StaticFiles(directory="static"), name="static") | |
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} | |
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"} | |
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 | |
async def read_index(): | |
return FileResponse('static/index.html') | |