sanatan_ai / main.py
vikramvasudevan's picture
Upload folder using huggingface_hub
2cfcf56 verified
raw
history blame
1.56 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 modules.home.app import home_app
from modules.youtube_metadata.app import youtube_metadata_app
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,"/sanatan_ai_web")
# app = gr.mount_gradio_app(app, youtube_metadata_app,"/yt_web")
app = gr.mount_gradio_app(app, home_app,"/home")
# Redirect root URL to /home/
@app.get("/")
async def redirect_to_web():
return RedirectResponse(url="/home/")
@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, access_log=False, log_level=logging.WARNING)