sanatan_ai / main.py
vikramvasudevan's picture
Upload folder using huggingface_hub
07505ba verified
raw
history blame
1.29 kB
import asyncio
from contextlib import asynccontextmanager
from fastapi.responses import RedirectResponse
import uvicorn
from fastapi import FastAPI
from modules.dropbox.audio import cleanup_audio_url_cache
from server import router as mobile_router
from app import gradio_app # your Blocks object
import gradio as gr
import logging
from fastapi import Request
logging.basicConfig(level=logging.INFO)
app = FastAPI(title="Sanatan AI Unified Server")
# Mount mobile endpoints
app.include_router(mobile_router, prefix="/api")
# Convert Gradio Blocks to ASGI app
app = gr.mount_gradio_app(app, gradio_app,"/web")
# Redirect root URL to /web/
@app.get("/")
async def redirect_to_web():
return RedirectResponse(url="/web/")
@app.middleware("http")
async def log_requests(request: Request, call_next):
logging.info(f"Request: {request.method} {request.url}")
response = await call_next(request)
logging.info(f"Response status: {response.status_code}")
return response
@asynccontextmanager
async def lifespan(app: FastAPI):
# Startup code: start cache cleanup
asyncio.create_task(cleanup_audio_url_cache())
yield
# Shutdown code (optional) can go here
if __name__ == "__main__":
uvicorn.run("main:app", host="0.0.0.0", port=7860, reload=False)