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("关闭数据库完成")