elysium / app.py
pmrinal2005's picture
Upload folder using huggingface_hub
a521353 verified
Raw
History Blame Contribute Delete
1.65 kB
"""Elysium — gradio.Server entrypoint (matches small-talk pattern).
We use `gr.Server` (a FastAPI host with Gradio's backend) so our custom
frontend (Canvas2D bioluminescent hypergraph) takes priority over any default
Gradio UI. All inference happens via /api routes registered by backend.server.
"""
import os
import pathlib
import gradio as gr
from fastapi.responses import FileResponse
from fastapi.staticfiles import StaticFiles
from backend.server import attach
DIST = pathlib.Path(__file__).parent / "frontend" / "dist"
app = gr.Server()
attach(app) # registers /api/* before static mounts
class CachedStaticFiles(StaticFiles):
"""Hashed bundle assets — cache hard."""
def file_response(self, *args, **kwargs):
r = super().file_response(*args, **kwargs)
r.headers["Cache-Control"] = "public, max-age=31536000, immutable"
return r
# Mount static asset folders (won't collide with /api or Gradio internals)
for sub in ("assets", "audio"):
d = DIST / sub
if d.is_dir():
cls = CachedStaticFiles if sub == "assets" else StaticFiles
app.mount(f"/{sub}", cls(directory=str(d)), name=sub)
_NO_CACHE = {"Cache-Control": "no-cache, must-revalidate"}
@app.get("/")
async def index():
return FileResponse(DIST / "index.html", headers=_NO_CACHE)
@app.get("/favicon.ico")
async def favicon():
return FileResponse(DIST / "index.html", headers=_NO_CACHE)
if __name__ == "__main__":
port = int(os.environ.get("GRADIO_SERVER_PORT", os.environ.get("PORT", 7860)))
app.launch(server_name="0.0.0.0", server_port=port)