47 lines
1.0 KiB
Python
47 lines
1.0 KiB
Python
"""FastAPI application entry point."""
|
|
from contextlib import asynccontextmanager
|
|
from fastapi import FastAPI
|
|
|
|
from .database import init_db, seed_default_providers
|
|
from .services.logger import async_logger
|
|
from .routes import health_router, chat_router, openai_router, anthropic_router
|
|
|
|
|
|
@asynccontextmanager
|
|
async def lifespan(app: FastAPI):
|
|
"""Application lifespan handler."""
|
|
# Startup
|
|
await init_db()
|
|
await seed_default_providers()
|
|
await async_logger.start()
|
|
|
|
yield
|
|
|
|
# Shutdown
|
|
await async_logger.stop()
|
|
|
|
|
|
app = FastAPI(
|
|
title="zzrouter",
|
|
description="AI Model API Proxy Service",
|
|
version="0.1.0",
|
|
lifespan=lifespan
|
|
)
|
|
|
|
# Register routers
|
|
app.include_router(health_router)
|
|
app.include_router(chat_router)
|
|
app.include_router(openai_router)
|
|
app.include_router(anthropic_router)
|
|
|
|
|
|
def run_server():
|
|
"""Run the server (entry point for script)."""
|
|
import uvicorn
|
|
from .config import HOST, PORT
|
|
uvicorn.run(app, host=HOST, port=PORT)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
run_server()
|