lucky-loster's picture
Upload folder using huggingface_hub
590a501 verified
Raw
History Blame Contribute Delete
1.74 kB
import logging
from contextlib import asynccontextmanager
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from app.api.platform_routes import router as platform_router
from app.api.research_routes import router as research_router
from app.api.routes import router
from app.api.websocket import ws_router
from app.core.config import settings
from app.core.contracts import CONTRACTS
from app.models.database import init_db
from app.services.market_data import market_data_service
logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(name)s: %(message)s")
logger = logging.getLogger(__name__)
@asynccontextmanager
async def lifespan(app: FastAPI):
logger.info("Starting %s v%s", settings.APP_NAME, settings.APP_VERSION)
await init_db()
await market_data_service.start()
logger.info("Market data service started for %d contracts", len(CONTRACTS))
yield
await market_data_service.stop()
logger.info("Shutdown complete")
app = FastAPI(
title=settings.APP_NAME,
version=settings.APP_VERSION,
description="Personal Trading System V1 - Futures Trading with Quantitative Strategies",
lifespan=lifespan,
)
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
app.include_router(router, prefix="/api")
app.include_router(platform_router, prefix="/api")
app.include_router(research_router, prefix="/api")
app.include_router(ws_router)
@app.get("/")
async def root():
return {
"name": settings.APP_NAME,
"version": settings.APP_VERSION,
"description": "Personal Trading System V1 API",
"docs": "/docs",
}