Skip to content

Latest commit

 

History

History
581 lines (503 loc) · 19.4 KB

project-structure.md

File metadata and controls

581 lines (503 loc) · 19.4 KB

项目结构

文档版本: 1.0
最后更新: 2026-04-14


概述

本文档详细说明 Litefs 项目的目录结构、模块职责和文件组织,帮助开发者快速理解项目架构。


1. 项目根目录

litefs/
├── src/                    # 源代码目录
│   └── litefs/            # 主包目录
├── tests/                  # 测试代码目录
├── examples/               # 示例代码目录
├── docs/                   # 文档目录
├── .trae/                  # Trae AI 配置
├── .scannerwork/           # SonarQube 扫描结果
├── pyproject.toml          # 项目配置文件
├── setup.py                # 安装脚本
├── requirements.txt        # 依赖列表
├── Makefile                # 构建命令
├── README.md               # 项目说明
├── LICENSE                 # 许可证
└── MANIFEST.in             # 打包清单

2. 源代码结构

2.1 主包目录 (src/litefs/)

src/litefs/
├── __init__.py             # 包初始化,导出公共 API
├── __main__.py             # 命令行入口
├── _version.py             # 版本信息
├── cli.py                  # 命令行工具
├── cli_db.py               # 数据库迁移 CLI(litefs db 子命令)
├── config.py               # 配置管理
├── context.py              # 请求上下文(g / 协程上下文)
├── core.py                 # 核心类 Litefs(Mixin 组合入口与装配)
├── forms.py                # 表单定义与校验
├── metrics.py              # 指标注册中心(Prometheus)
├── static_handler.py       # 静态文件处理
├── cache_decorators.py     # 缓存装饰器
│
├── app/                    # 应用组装模块(自 core.py 拆分)
│   ├── __init__.py         # 子包说明
│   ├── helpers.py          # 序列化/配置/套接字/Session 初始化辅助
│   ├── protocol_mixin.py   # WSGI/ASGI 协议适配与错误处理
│   ├── routing_mixin.py    # 路由注册与 WebSocket 入口
│   ├── extension_mixin.py  # 中间件/插件/健康检查/数据库扩展
│   ├── server_mixin.py     # 服务器启动/关闭/热重载
│   └── server_cli.py       # 内置测试服务器 CLI
│
├── auth/                   # 认证与授权
│   ├── __init__.py
│   ├── decorators.py       # 权限装饰器
│   ├── jwt.py              # JWT 签发与校验
│   ├── middleware.py       # 认证中间件
│   ├── models.py           # 用户/角色模型
│   ├── oauth2.py           # OAuth2 流程
│   ├── password.py         # 密码哈希
│   └── providers.py        # 第三方登录提供商
│
├── cache/                  # 缓存模块
│   ├── __init__.py
│   ├── base.py             # 缓存接口定义
│   ├── cache.py            # 内存缓存实现
│   ├── db.py               # 数据库缓存
│   ├── factory.py          # 缓存工厂
│   ├── form_cache.py       # 表单缓存
│   ├── manager.py          # 缓存管理器
│   ├── memcache.py         # Memcache 缓存
│   └── redis.py            # Redis 缓存
│
├── database/               # 数据库模块
│   ├── __init__.py
│   ├── core.py             # 数据库核心
│   ├── migrations.py       # Alembic 迁移管理器
│   └── models.py           # 数据模型
│
├── debug/                  # 调试工具
│   ├── __init__.py
│   └── middleware.py       # 调试工具栏中间件
│
├── error_pages.py          # 错误页面
├── exceptions.py           # 异常定义
├── security.py             # 安全工具
├── validators.py           # 验证器
│
├── handlers/               # 请求处理器
│   ├── __init__.py
│   ├── base.py             # 请求处理器基类
│   ├── wsgi.py             # WSGI 请求处理器
│   ├── asgi.py             # ASGI 请求处理器
│   ├── socket.py           # Socket 请求处理器
│   ├── response.py         # HTTP 响应对象
│   ├── form.py             # 表单数据解析
│   └── enhanced.py         # 增强请求处理
│
├── i18n/                   # 国际化
│   ├── __init__.py
│   ├── locale.py           # locale 解析与协商
│   ├── middleware.py       # 语言协商中间件
│   ├── template.py         # 模板翻译函数注入
│   └── translator.py       # gettext 包装
│
├── mail/                   # 邮件服务
│   ├── __init__.py
│   ├── message.py          # 邮件与附件 MIME 结构
│   ├── smtp.py             # SMTP 客户端(STARTTLS/SSL + 重试)
│   ├── tasks.py            # Celery 异步发送任务
│   └── template.py         # Mako 双模板渲染
│
├── middleware/             # 中间件
│   ├── __init__.py
│   ├── base.py             # 中间件基类
│   ├── cors.py             # CORS 中间件
│   ├── csrf.py             # CSRF 中间件
│   ├── enhanced_logging.py # 增强日志中间件
│   ├── health_check.py     # 健康检查
│   ├── logging.py          # 日志中间件
│   ├── prometheus.py       # Prometheus 监控中间件
│   ├── rate_limit.py       # 限流中间件
│   └── security.py         # 安全中间件
│
├── openapi/                # OpenAPI
│   ├── __init__.py
│   ├── generator.py        # 规范生成
│   └── ui.py               # Swagger UI
│
├── plugins/                # 插件系统
│   ├── __init__.py
│   ├── base.py             # 插件基类
│   └── loader.py           # 插件加载器
│
├── routing/                # 路由系统
│   ├── __init__.py
│   ├── radix_tree.py       # 基数树实现
│   └── router.py           # 路由器
│
├── server/                 # 服务器实现
│   ├── __init__.py
│   ├── asgi.py             # ASGI 服务器
│   ├── asyncio.py          # AsyncIO 服务器
│   └── greenlet.py         # Greenlet 服务器
│
├── session/                # 会话管理
│   ├── __init__.py
│   ├── base.py             # 会话接口定义
│   ├── cache_session.py    # 缓存会话
│   ├── db.py               # 数据库会话
│   ├── factory.py          # 会话工厂
│   ├── manager.py          # 会话管理器
│   ├── memcache.py         # Memcache 会话
│   ├── redis.py            # Redis 会话
│   └── session.py          # 会话基类实现
│
├── tasks/                  # Celery 任务队列集成
│   └── __init__.py         # Celery 封装、任务装饰器、状态查询与健康检查
│
├── templates/              # 模板文件
│   └── scaffold/           # 脚手架模板
│       ├── site/           # 站点模板
│       └── __init__.py
│
├── utils/                  # 工具函数
│   ├── __init__.py
│   └── utils.py            # 工具函数实现
│
└── websocket/              # WebSocket
    ├── __init__.py
    ├── connection.py       # 连接管理
    ├── protocol.py         # 帧编解码
    └── server.py           # WebSocket 服务器

2.2 模块职责

核心模块

模块 文件 职责
主入口 __init__.py 导出公共 API,版本信息
核心类 core.py + app/ Litefs 主类(Mixin 组合),应用初始化与能力模块
配置 config.py 配置加载和管理
CLI cli.py 命令行工具实现
迁移 CLI cli_db.py litefs db 数据库迁移子命令

服务器模块

模块 文件 职责
ASGI server/asgi.py ASGI 服务器实现
AsyncIO server/asyncio.py AsyncIO 服务器实现
Greenlet server/greenlet.py Greenlet 服务器实现

路由模块

模块 文件 职责
路由器 routing/router.py 路由注册和匹配
基数树 routing/radix_tree.py 高效路由匹配算法

中间件模块

模块 文件 职责
基类 middleware/base.py 中间件基类和接口
CORS middleware/cors.py 跨域资源共享
CSRF middleware/csrf.py CSRF 保护
健康检查 middleware/health_check.py 健康检查端点
日志 middleware/logging.py 请求日志记录
增强日志 middleware/enhanced_logging.py 请求追踪、结构化日志、敏感信息过滤
监控 middleware/prometheus.py Prometheus 指标采集与 /metrics 端点
限流 middleware/rate_limit.py 请求限流
安全 middleware/security.py 安全头部和防护
调试 debug/middleware.py 调试工具栏
国际化 i18n/middleware.py 语言协商与 locale 回写

缓存模块

模块 文件 职责
基类 cache/cache.py 缓存接口定义
内存缓存 cache/cache.py 内存缓存实现
数据库缓存 cache/db.py 数据库缓存实现
Redis cache/redis.py Redis 缓存实现
Memcache cache/memcache.py Memcache 缓存实现
管理器 cache/manager.py 缓存管理器

会话模块

模块 文件 职责
基类 session/session.py 会话接口定义
缓存会话 session/cache_session.py 基于缓存的会话
数据库会话 session/db.py 数据库会话存储
Redis 会话 session/redis.py Redis 会话存储
Memcache 会话 session/memcache.py Memcache 会话存储
管理器 session/manager.py 会话管理器

扩展能力模块

模块 文件 职责
认证 auth/ JWT、OAuth2、密码哈希、权限装饰器
数据库迁移 database/migrations.py Alembic 迁移环境与版本管理
国际化 i18n/ locale 协商、gettext 翻译、模板翻译注入
邮件 mail/ 邮件结构、SMTP 客户端、模板渲染、异步任务
指标 metrics.py 指标注册中心与 Prometheus 文本渲染
OpenAPI openapi/ 规范生成与 Swagger UI
任务队列 tasks/__init__.py Celery 封装与任务状态查询
WebSocket websocket/ 连接管理、帧编解码、WebSocket 服务器

3. 测试结构

3.1 测试目录 (tests/)

tests/
├── __init__.py             # 测试包初始化
├── run_tests.py            # 测试运行脚本
├── README.md               # 测试说明
│
├── unit/                   # 单元测试
│   ├── __init__.py
│   ├── test_basic.py       # 基础功能测试
│   ├── test_cache.py       # 缓存测试
│   ├── test_cache_manager.py
│   ├── test_cache_backends_web.py
│   ├── test_config.py      # 配置测试
│   ├── test_core.py        # 核心类测试
│   ├── test_database_cache.py
│   ├── test_database_session.py
│   ├── test_default_page.py
│   ├── test_environ.py
│   ├── test_error_pages.py
│   ├── test_examples_basic.py
│   ├── test_form.py
│   ├── test_health_check.py
│   ├── test_max_request_size.py
│   ├── test_memorycache.py
│   ├── test_middleware.py
│   ├── test_middleware_params.py
│   ├── test_rate_limit_*.py
│   ├── test_routing.py     # 路由测试
│   ├── test_scaffold.py
│   ├── test_session.py
│   ├── test_streaming.py
│   ├── test_treecache.py
│   ├── test_validators.py
│   ├── test_wsgi*.py       # WSGI 测试
│   └── ...
│
├── integration/            # 集成测试
│   └── test_starlette_integration.py
│
├── performance/            # 性能测试
│   ├── test_deployment_modes.py
│   ├── test_greenlet_vs_asyncio.py
│   ├── test_performance.py
│   ├── test_worker_performance.py
│   └── run_test.sh
│
├── stress/                 # 压力测试
│   └── test_stress.py
│
├── test_asyncio_server.py
├── test_form_cache.py
├── test_hot_reload.py
├── test_keepalive.py
├── test_process_server.py
├── test_security.py
└── test_session_optimization.py

3.2 测试分类

类型 目录 说明
单元测试 unit/ 测试单个函数和类
集成测试 integration/ 测试模块间交互
性能测试 performance/ 测试性能指标
压力测试 stress/ 测试高并发场景

4. 示例结构

4.1 示例目录 (examples/)

examples/
├── README.md               # 示例索引
│
├── 01-quickstart/          # 快速入门示例
│   ├── app.py
│   ├── templates/
│   └── static/
│
├── 02-rest-api/            # REST API 示例
│   ├── app.py
│   ├── templates/
│   └── static/
│
├── 03-web-app/             # 博客系统示例
│   ├── app.py
│   ├── models.py
│   ├── data/
│   ├── templates/
│   └── static/
│
├── 04-realtime/            # 实时通信示例
│   ├── app.py
│   ├── templates/
│   └── static/
│
├── 05-production/          # 生产部署示例
│   ├── app.py
│   ├── celery_tasks.py
│   ├── Dockerfile
│   ├── docker-compose.yml
│   ├── nginx.conf
│   └── requirements.txt
│
├── 06-prometheus-monitoring/   # Prometheus 监控示例
│   ├── app.py
│   ├── templates/
│   └── static/
│
├── 07-database-migrations/    # 数据库迁移示例
│   ├── app.py
│   ├── models.py
│   ├── templates/
│   └── static/
│
├── 08-mail-service/            # 邮件服务示例
│   ├── app.py
│   ├── templates/
│   │   └── email/              # 邮件双模板(txt / html)
│   └── static/
│
└── 09-i18n/                   # 国际化示例
    ├── app.py
    ├── compile_messages.py     # .po -> .mo 编译器
    ├── locales/
    │   └── zh_CN/LC_MESSAGES/
    │       ├── messages.po
    │       └── messages.mo
    ├── templates/
    └── static/

4.2 示例分类

示例 说明 难度
01-quickstart 路由、中间件、模板、静态文件入门 ⭐
02-rest-api JWT 认证与完整 REST API ⭐⭐⭐
03-web-app 完整博客系统与 OAuth2 ⭐⭐⭐⭐
04-realtime WebSocket 实时通信 ⭐⭐
05-production 生产部署与容器化 ⭐⭐⭐
06-prometheus-monitoring 监控指标采集与暴露 ⭐⭐
07-database-migrations Alembic 版本化迁移 ⭐⭐
08-mail-service 邮件模板与异步发送 ⭐⭐
09-i18n 国际化与语言协商 ⭐⭐

5. 文档结构

5.1 文档目录 (docs/)

docs/
├── source/                 # Sphinx 源文件
│   ├── index.rst           # 文档首页
│   ├── conf.py             # Sphinx 配置
│   │
│   ├── getting-started.md  # 快速开始
│   ├── routing-guide.md    # 路由指南
│   ├── static-files-guide.md
│   ├── configuration.md    # 配置管理
│   ├── middleware-guide.md # 中间件指南
│   ├── cache-system.md     # 缓存系统
│   ├── session-management.md
│   ├── wsgi-deployment.md  # WSGI 部署
│   ├── asgi-deployment.md  # ASGI 部署
│   ├── unit-tests.md       # 单元测试
│   ├── performance-stress-tests.md
│   ├── improvement-analysis.md
│   ├── bug-fixes.md
│   ├── linux-server-guide.md
│   ├── development.md
│   └── project-structure.md
│
├── build/                  # 构建输出
│   └── html/              # HTML 文档
│
├── Makefile                # 文档构建命令
└── make.bat                # Windows 构建命令

5.2 文档分类

类型 文件 说明
快速开始 getting-started.md 入门教程
核心功能 routing-guide.md 等 功能指南
部署运维 wsgi-deployment.md 等 部署指南
开发文档 development.md 等 开发指南
API 文档 api/ API 参考

6. 配置文件

6.1 项目配置

文件 说明
pyproject.toml 项目配置、依赖、工具配置
setup.py 安装脚本
requirements.txt 依赖列表
Makefile 构建命令
MANIFEST.in 打包清单

6.2 工具配置

文件 说明
.gitignore Git 忽略规则
.editorconfig 编辑器配置
pyproject.toml Black/isort/mypy 配置

7. 依赖关系

7.1 模块依赖图

litefs (core)
    ├── cache (缓存)
    ├── session (会话)
    ├── routing (路由)
    ├── middleware (中间件)
    ├── handlers (处理器)
    ├── server (服务器)
    └── utils (工具)

7.2 外部依赖

依赖 版本 用途
argh >=0.26.2 CLI 参数解析
greenlet >=0.4.13 协程支持
Mako >=1.0.6 模板引擎
MarkupSafe >=1.1.1 HTML 转义
PyYAML >=5.1 YAML 解析
watchdog >=0.8.3 文件监控
SQLAlchemy >=2.0.0 ORM 支持

pathtools 已于 v0.9.0 移除:源码从未直接引用,且它是 watchdog 的子依赖; 显式声明会导致其在 Python 3.12 上构建失败(No module named 'imp')。


8. 文件命名规范

8.1 Python 文件

  • 模块: 小写字母,下划线分隔 (cache_manager.py)
  • 类: PascalCase (MemoryCache)
  • 函数: snake_case (get_cache)
  • 常量: UPPER_SNAKE_CASE (MAX_SIZE)

8.2 测试文件

  • 单元测试: test_<module>.py (test_cache.py)
  • 集成测试: test_<feature>_integration.py
  • 性能测试: test_<feature>_performance.py

8.3 文档文件

  • Markdown: 小写字母,连字符分隔 (getting-started.md)
  • Sphinx: 小写字母,连字符分隔 (api-guide.rst)

9. 开发建议

9.1 添加新功能

  1. 在相应模块创建文件
  2. 实现功能代码
  3. 编写单元测试
  4. 更新文档
  5. 添加示例

9.2 修改现有功能

  1. 找到对应模块文件
  2. 修改代码
  3. 更新测试
  4. 更新文档
  5. 检查兼容性

9.3 添加新中间件

  1. 在 middleware/ 创建文件
  2. 继承 BaseMiddleware
  3. 实现 process_request 和 process_response
  4. 在 __init__.py 导出
  5. 编写测试和文档

10. 相关资源


文档维护: 开发团队
最后更新: 2026-04-14