1. 启动入口分析
CryptoAiAdmin项目采用 FastAPI 框架构建,其启动过程设计清晰且具有良好的可扩展性。项目的启动入口位于 main.py 文件中,该文件定义了一个命令行应用,提供了三个主要命令:run(启动服务)、revision(生成数据库迁移)和 upgrade(应用数据库迁移)。
1.1 应用创建函数
应用实例的创建通过 create_app() 函数完成:
# 核心应用创建函数
def create_app() -> FastAPI:
"""创建 FastAPI 应用实例"""
# 导入初始化组件
from app.plugin.init_app import (
register_middlewares,
register_exceptions,
register_routers,
register_files,
reset_api_docs,
lifespan
)
# 导入配置
from app.config.setting import settings
# 创建FastAPI应用实例,传入配置和生命周期管理器
app = FastAPI(**settings.FASTAPI_CONFIG, lifespan=lifespan)
# 初始化日志系统
from app.core.logger import setup_logging
setup_logging()
# 按顺序注册各种组件
register_exceptions(app) # 异常处理器
register_middlewares(app) # 中间件
register_routers(app) # 路由
register_files(app) # 静态文件
reset_api_docs(app) # API文档配置
return app
1.2 服务启动命令
服务启动通过 run() 函数处理,该函数使用 typer 命令行工具提供了环境选择等参数:
@shell_app.command(name="run", help="启动 FastapiAdmin 服务")
def run(env: EnvironmentEnum = typer.Option(EnvironmentEnum.DEV, "--env", help="运行环境 (dev, prod)")) -> None:
"""启动FastAPI服务"""
try:
# 设置环境变量
os.environ["ENVIRONMENT"] = env.value
# 显示启动横幅
from app.utils.banner import worship
typer.echo(worship(env.value))
# 清除配置缓存,确保重新加载配置
from app.config.setting import get_settings
get_settings.

最低0.47元/天 解锁文章
4371

被折叠的 条评论
为什么被折叠?



