forked from killua/TakwayPlatform
70 lines
2.5 KiB
Python
70 lines
2.5 KiB
Python
from fastapi import FastAPI, Depends
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
from contextlib import asynccontextmanager
|
|
from sqlalchemy import create_engine
|
|
from apscheduler.schedulers.asyncio import AsyncIOScheduler
|
|
from apscheduler.triggers.cron import CronTrigger
|
|
from .models import Base
|
|
from .routes.character_route import router as character_router
|
|
from .routes.user_route import router as user_router
|
|
from .routes.session_route import router as session_router
|
|
from .routes.chat_route import router as chat_router
|
|
from .dependencies.logger import get_logger
|
|
from .background_tasks import updating_redis_cache
|
|
from config import get_config
|
|
|
|
|
|
#----------------------获取日志------------------------
|
|
logger = get_logger()
|
|
logger.info("日志初始化完成")
|
|
#-----------------------------------------------------
|
|
|
|
#----------------------获取配置------------------------
|
|
Config = get_config()
|
|
logger.info("配置获取完成")
|
|
#-----------------------------------------------------
|
|
|
|
|
|
#--------------------初始化数据库-----------------------
|
|
engine = create_engine(Config.SQLALCHEMY_DATABASE_URI)
|
|
Base.metadata.create_all(bind=engine)
|
|
logger.info("数据库初始化完成")
|
|
#------------------------------------------------------
|
|
|
|
|
|
#--------------------设置定时任务-----------------------
|
|
scheduler = AsyncIOScheduler()
|
|
# scheduler.add_job(updating_redis_cache, CronTrigger.from_crontab("0 4 * * *"))
|
|
@asynccontextmanager
|
|
async def lifespan(app:FastAPI):
|
|
scheduler.start() #启动定时任务
|
|
yield
|
|
scheduler.shutdown() #关闭定时任务
|
|
logger.info("定时任务初始化完成")
|
|
#------------------------------------------------------
|
|
|
|
|
|
#--------------------创建FastAPI实例--------------------
|
|
app = FastAPI(lifespan=lifespan)
|
|
logger.info("FastAPI实例创建完成")
|
|
#------------------------------------------------------
|
|
|
|
|
|
#---------------------初始化路由------------------------
|
|
app.include_router(character_router)
|
|
app.include_router(user_router)
|
|
app.include_router(session_router)
|
|
app.include_router(chat_router)
|
|
logger.info("路由初始化完成")
|
|
#-------------------------------------------------------
|
|
|
|
|
|
#-------------------设置跨域中间件-----------------------
|
|
app.add_middleware(
|
|
CORSMiddleware,
|
|
allow_origins=["*"], # 允许所有源,也可以指定特定源
|
|
allow_credentials=True,
|
|
allow_methods=["*"], # 允许所有方法
|
|
allow_headers=["*"], # 允许所有头
|
|
)
|
|
#------------------------------------------------------- |