fastapi_event.py 1016 Bytes
import logging
from contextlib import asynccontextmanager
from fastapi import FastAPI
from tortoise import Tortoise
from app.config.tortoise_config import getTortoiseConfig
from app.job.job import scheduler

logger = logging.getLogger(__name__)


async def init():
    # 初始化链接
    logger.info("开始初始化数据库")
    await Tortoise.init(config=getTortoiseConfig().model_dump())
    # 生成数据库表数据
    logger.info("开始生成数据库表")
    await Tortoise.generate_schemas()


async def close():
    await Tortoise.close_connections()


@asynccontextmanager
async def lifespan(app: FastAPI):
    # 开始apscheduler
    scheduler.start()
    logging.info("apscheduler启动完成")
    await init()
    logging.info("初始化数据库完成")
    yield
    # 在异步上下文管理器中,"退出上下文"时清理机器学习模型,释放资源
    scheduler.shutdown()
    logging.info("apscheduler关闭完成")
    await close()
    logging.info("关闭数据库完成")