TakwayPlatform/app/__init__.py

70 lines
2.5 KiB
Python
Raw Permalink Normal View History

2024-05-01 17:18:30 +08:00
from fastapi import FastAPI, Depends
from fastapi.middleware.cors import CORSMiddleware
from contextlib import asynccontextmanager
2024-05-01 17:18:30 +08:00
from sqlalchemy import create_engine
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from apscheduler.triggers.cron import CronTrigger
2024-05-01 17:18:30 +08:00
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
2024-05-01 17:18:30 +08:00
from .dependencies.logger import get_logger
from .background_tasks import updating_redis_cache
2024-05-01 17:18:30 +08:00
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("定时任务初始化完成")
#------------------------------------------------------
2024-05-01 17:18:30 +08:00
#--------------------创建FastAPI实例--------------------
app = FastAPI(lifespan=lifespan)
2024-05-01 17:18:30 +08:00
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("路由初始化完成")
#-------------------------------------------------------
2024-05-01 17:18:30 +08:00
#-------------------设置跨域中间件-----------------------
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # 允许所有源,也可以指定特定源
allow_credentials=True,
allow_methods=["*"], # 允许所有方法
allow_headers=["*"], # 允许所有头
)
#-------------------------------------------------------