slimshadow's picture
Update app.py
96f6f96 verified
raw
history blame
1.79 kB
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")
@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
@app.get("/")
async def read_index():
return FileResponse('static/index.html')