|
""" |
|
ASGI entry point for the Open LLM Leaderboard API. |
|
""" |
|
import os |
|
import uvicorn |
|
import logging |
|
import logging.config |
|
from fastapi import FastAPI |
|
from fastapi.middleware.cors import CORSMiddleware |
|
from fastapi.middleware.gzip import GZipMiddleware |
|
import sys |
|
|
|
from app.api.router import router |
|
from app.core.fastapi_cache import setup_cache |
|
from app.utils.logging import LogFormatter |
|
from app.config import hf_config |
|
|
|
|
|
LOGGING_CONFIG = { |
|
"version": 1, |
|
"disable_existing_loggers": True, |
|
"formatters": { |
|
"default": { |
|
"format": "%(name)s - %(levelname)s - %(message)s", |
|
} |
|
}, |
|
"handlers": { |
|
"default": { |
|
"formatter": "default", |
|
"class": "logging.StreamHandler", |
|
"stream": "ext://sys.stdout", |
|
} |
|
}, |
|
"loggers": { |
|
"uvicorn": { |
|
"handlers": ["default"], |
|
"level": "WARNING", |
|
"propagate": False, |
|
}, |
|
"uvicorn.error": { |
|
"level": "WARNING", |
|
"handlers": ["default"], |
|
"propagate": False, |
|
}, |
|
"uvicorn.access": { |
|
"handlers": ["default"], |
|
"level": "WARNING", |
|
"propagate": False, |
|
}, |
|
"app": { |
|
"handlers": ["default"], |
|
"level": "WARNING", |
|
"propagate": False, |
|
} |
|
}, |
|
"root": { |
|
"handlers": ["default"], |
|
"level": "WARNING", |
|
} |
|
} |
|
|
|
|
|
logging.config.dictConfig(LOGGING_CONFIG) |
|
logger = logging.getLogger("app") |
|
|
|
|
|
app = FastAPI( |
|
title="Open LLM Leaderboard", |
|
version="1.0.0", |
|
docs_url="/docs", |
|
) |
|
|
|
|
|
app.add_middleware( |
|
CORSMiddleware, |
|
allow_origins=["*"], |
|
allow_credentials=True, |
|
allow_methods=["*"], |
|
allow_headers=["*"], |
|
) |
|
|
|
|
|
app.add_middleware(GZipMiddleware, minimum_size=500) |
|
|
|
|
|
app.include_router(router, prefix="/api") |
|
|
|
@app.on_event("startup") |
|
async def startup_event(): |
|
"""Initialize services on startup""" |
|
logger.info("\n") |
|
logger.info(LogFormatter.section("APPLICATION STARTUP")) |
|
|
|
|
|
logger.info(LogFormatter.section("HUGGING FACE CONFIGURATION")) |
|
logger.info(LogFormatter.info(f"Organization: {hf_config.HF_ORGANIZATION}")) |
|
logger.info(LogFormatter.info(f"Token Status: {'Present' if hf_config.HF_TOKEN else 'Missing'}")) |
|
logger.info(LogFormatter.info(f"Using repositories:")) |
|
logger.info(LogFormatter.info(f" - Queue: {hf_config.QUEUE_REPO}")) |
|
logger.info(LogFormatter.info(f" - Aggregated: {hf_config.AGGREGATED_REPO}")) |
|
logger.info(LogFormatter.info(f" - Votes: {hf_config.VOTES_REPO}")) |
|
logger.info(LogFormatter.info(f" - Maintainers Highlight: {hf_config.MAINTAINERS_HIGHLIGHT_REPO}")) |
|
|
|
|
|
setup_cache() |
|
logger.info(LogFormatter.success("FastAPI Cache initialized with in-memory backend")) |