结构设计

Python 项目如何避免入口文件越来越重

很多 Python 项目在初期只有一个简单的启动脚本,随着配置项、数据库连接、日志初始化、任务调度不断叠加,入口文件就会变成最难维护的部分。入口承担的事情过多,通常意味着后续改动越来越危险。

一、入口文件只保留三类职责

业务逻辑、SQL、接口细节都不应该继续堆在入口层。入口的作用更像“装配台”,而不是“工作台”。

二、把依赖装配显式化

def build_app() -> FastAPI:
    settings = load_settings()
    logger = create_logger(settings)
    db = create_db_engine(settings)
    cache = create_cache(settings)

    app = FastAPI(title="research-service")
    register_routes(app, db=db, cache=cache, logger=logger)
    return app

这样的结构有两个优点。第一,初始化顺序清晰;第二,测试时可以替换掉单个依赖,而不需要从头跑完整个启动流程。

三、用模块边界替代“公共工具箱”

很多项目后面变得难以维护,不是因为代码量大,而是因为大家把功能都扔进一个叫 utils.pycommon.py 的文件里。时间一长,任何模块都依赖它,结果形成隐性耦合。

更稳的方式是:配置归配置、模型归模型、数据访问归数据访问,尽量让模块名称体现职责,而不是只体现“方便放东西”。

四、命令行脚本和 Web 服务不要共用同一个入口

如果一个项目既有接口服务,又有定时脚本或离线处理任务,最好按命令拆分入口。这样部署、回滚和排障时都更明确。

返回文章列表