Zachary Greathouse
Zg/codebase refactor (#20)
5ed9749 unverified
raw
history blame contribute delete
1.21 kB
# Standard Library Imports
import asyncio
from pathlib import Path
# Third-Party Library Imports
import gradio as gr
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
# Local Application Imports
from src.common import Config, logger
from src.database import init_db
from src.frontend import Frontend
from src.middleware import MetaTagInjectionMiddleware
async def main():
"""
Asynchronous main function to initialize the application.
"""
logger.info("Launching TTS Arena Gradio app...")
config = Config.get()
db_session_maker = init_db(config)
frontend = Frontend(config, db_session_maker)
demo = await frontend.build_gradio_interface()
app = FastAPI()
app.add_middleware(MetaTagInjectionMiddleware)
public_dir = Path("public")
app.mount("/static", StaticFiles(directory=public_dir), name="static")
gr.mount_gradio_app(
app=app,
blocks=demo,
path="/",
allowed_paths=["static"]
)
import uvicorn
config = uvicorn.Config(app, host="0.0.0.0", port=7860, log_level="info")
server = uvicorn.Server(config)
await server.serve()
if __name__ == "__main__":
asyncio.run(main())