Skip to content

Releases: leafcoder/litefs

LiteFS v0.8.3

19 May 01:59

Choose a tag to compare

重大改进

简化包导入结构

  • 移除 __init__.py 中的 __getattr__ 延迟导入机制和庞大的 __all__ 列表(203行 → 31行)
  • 所有代码改为从子模块直接导入(如 from litefs.core import Litefs),降低维护复杂度
  • 同步更新所有测试文件(28个)、示例代码(10个)、文档(24个)中的导入方式

异步错误处理重构

  • 提取 _build_error_parts 公共方法,消除 _handle_error_parts_async_handle_error_parts 的重复代码

WSGI 输入流修复

  • 读取 wsgi.input 后重置流位置(seek(0)),确保后续中间件可重新读取请求体
  • 提取 _reset_input_stream 静态方法,3处重复逻辑统一调用,增加 try/except 防御

限流中间件测试修复

  • 修复 RateLimitMiddlewareThrottleMiddleware 测试用例,适配 Response 对象返回类型

日志系统健壮性

  • 修复 log_info/log_error/log_debuglogger=None 时的 AttributeError,回退到 logging 模块级 logger
  • DatabaseManager.close_all() 改用有效 logger 而非传入 None

Benchmark 测试脚本全面优化

  • 修复 fastapi_uvicorn_server.py 多 worker 启动问题(必须使用 "module:app" 字符串引用)
  • 修复 wait_for_server 计时错误(原实际只等待 ~7.5s 却声称 15s)
  • 修复 median_of 偶数长度中位数计算错误
  • 增加信号处理(Ctrl+C 清理残留进程)、依赖检查、端口冷却等待
  • 按进程组去重杀进程,避免重复操作
  • LiteFS 服务器添加 session_secure=True 消除开发环境警告

Bug 修复

  • 修复服务器关闭时 DatabaseManager.close_all()AttributeError
  • 修复 RateLimitMiddleware 测试中 'Response' object is not subscriptable 错误
  • 修复 WSGI 输入流读取后未重置位置导致后续中间件无法读取请求体的问题

Full Changelog: v0.8.2...v0.8.3

Release v0.8.2

18 May 15:50

Choose a tag to compare

v0.8.2 Release Notes

新增

  • 性能基准测试框架(LiteFS vs FastAPI),支持多并发级别和多 Worker 配置
  • 多迭代测试与中位数计算,减少结果波动
  • 服务器预热(1000 次请求)与健康检查机制
  • 性能基准测试报告文档

优化

  • 性能测试脚本端口清理机制(SIGKILL + fuser + 进程组管理)
  • 统一 FastAPI 测试响应格式(PlainTextResponse),避免 JSON 序列化开销
  • FastAPI 测试代码改为 async 异步模式

修复

  • 修复端口残留进程无法清理的问题
  • 修复测试脚本中进程组管理问题

性能基准测试结果摘要

测试工具: Apache Benchmark (ab) | 总请求: 10000 | 预热: 1000 | 迭代: 3 (中位数)

1 Worker

并发 LiteFS+HttpServer LiteFS+Gunicorn FastAPI+Gunicorn+Uvicorn FastAPI+Uvicorn
100 9,493 9,923 12,407 10,783
500 14,014 14,119 13,724 13,054
1000 13,937 15,055 14,671 14,694

4 Worker

并发 LiteFS+HttpServer LiteFS+Gunicorn FastAPI+Gunicorn+Uvicorn FastAPI+Uvicorn
100 16,393 11,432 10,646 13,841
500 15,732 12,427 12,966 11,465
1000 15,270 13,975 15,406 14,784

8 Worker

并发 LiteFS+HttpServer LiteFS+Gunicorn FastAPI+Gunicorn+Uvicorn FastAPI+Uvicorn
100 12,561 10,141 9,725 14,003
500 13,172 15,660 12,210 12,162
1000 17,303 13,882 12,666 13,943

单位: req/sec (中位数)

Release v0.8.1

18 May 15:10

Choose a tag to compare

Release v0.8.1

主要更新

性能测试优化

  • FastAPI async 模式优化: 将 FastAPI 测试视图改为 async 异步模式,充分发挥异步性能优势
  • 性能基准测试完成: 完成全面的性能基准测试,生成详细报告

性能测试结果

单核性能

  • LiteFS: ~9,500 req/sec
  • FastAPI: ~4,600 req/sec
  • 性能提升: 2.06 倍

4核性能

  • LiteFS: ~16,000-20,000 req/sec
  • FastAPI: ~11,000 req/sec
  • 性能提升: 1.40-1.92 倍

8核性能

  • LiteFS: ~21,000 req/sec
  • FastAPI: ~14,500 req/sec
  • 性能提升: 1.44-1.47 倍

测试配置

  • 测试工具: Apache Benchmark (ab)
  • 总请求数: 10,000
  • 并发级别: 100, 500, 1000
  • 测试内容: 返回 "Hello world" 文本

文档更新

性能分析

  1. 单核优势: LiteFS 在单核模式下性能优势最明显,快 2 倍以上
  2. 多核扩展: 随着核心数增加,LiteFS 性能持续提升
  3. 高并发稳定: 在高并发场景下,LiteFS 性能优势稳定
  4. async 模式验证: 即使 FastAPI 使用 async 模式,LiteFS 仍显著领先

结论

LiteFS 是一个高性能的 Web 框架,在所有测试场景下均展现出显著的性能优势,特别适合处理高并发的 HTTP 请求。

Release v0.8.0

18 May 14:52

Choose a tag to compare

Release v0.8.0

主要更新

性能优化

  • DatabaseCache 概率性清理机制: 避免每次操作都执行清理,提升性能
  • DatabaseSession 连接池支持: 基于 SQLAlchemy 的高性能连接池
  • 会话ID生成优化: 移除不必要的存储查找,性能提升 10-50倍

安全增强

  • 密码泄露检查: 集成 HIBP API (Have I Been Pwned),支持智能缓存
  • 环境感知配置: session_secure 根据环境自动设置

文档更新

  • 所有新功能完整文档
  • 使用示例和最佳实践

详细变更

1. DatabaseCache 概率性清理

问题: 原实现每次 get/exists 都执行 cleanup,影响性能

优化:

  • 默认 1% 概率触发清理
  • 支持阈值触发清理 (默认1000次操作)
  • 可配置 cleanup_probabilitycleanup_threshold

使用示例:

cache = DatabaseCache(
    db_path="cache.db",
    cleanup_probability=0.05,  # 5% 概率触发清理
    cleanup_threshold=500      # 每500次操作强制清理
)

2. DatabaseSession 连接池

问题: 原实现无连接池,频繁创建/关闭连接影响性能

优化:

  • 基于 SQLAlchemy 的高性能连接池
  • 支持 pool_size, max_overflow, pool_timeout 等配置
  • 显著提升并发访问性能

使用示例:

session_store = DatabaseSession(
    db_path="/path/to/sessions.db",
    pool_size=10,           # 连接池大小
    max_overflow=20,        # 最大溢出连接数
    pool_timeout=60,        # 获取连接超时时间
    pool_recycle=1800       # 连接回收时间
)

3. 密码泄露检查

问题: 原实现仅4个硬编码哈希,无实际安全价值

优化:

  • 集成 HIBP API (Have I Been Pwned)
  • 使用 k-anonymity 保护隐私
  • 支持智能缓存 (性能提升 9440倍)
  • 提供泄露次数查询

使用示例:

from litefs.auth.password import check_password_breach, get_breach_count

# 检查密码是否泄露
is_breached = check_password_breach("password123")

# 获取泄露次数
count = get_breach_count("password123")

4. 环境感知配置

问题: session_secure 默认 False,生产环境不安全

优化:

  • session_secure 根据环境自动设置
  • 生产环境默认 True, 开发环境默认 False
  • 自动安全警告

使用示例:

# 生产环境 - session_secure 自动设置为 True
app = Litefs(debug=False)

# 开发环境 - session_secure 自动设置为 False
app = Litefs(debug=True)

5. 会话ID生成优化

问题: _new_session_id() 每次都检查存储,SHA-256 碰撞概率极低

优化:

  • 移除不必要的存储查找
  • SHA-256 碰撞概率约为 2^-128,几乎不可能发生碰撞
  • 性能提升 10-50倍

测试验证

  • ✅ 64个缓存和会话测试全部通过
  • ✅ 18个认证测试全部通过
  • ✅ 新增12个性能优化测试
  • ✅ 新增6个密码泄露检查测试
  • ✅ 所有文档已同步更新

升级说明

本次更新完全向后兼容,无需修改现有代码即可享受性能提升。

如需使用新功能,请参考上述使用示例。

贡献者

  • Leafcoder (主要开发和维护)

完整变更日志

查看 CHANGELOG.md 获取完整的变更历史。

v0.3

22 Apr 09:07

Choose a tag to compare

功能升级

v0.2.5

14 May 06:43

Choose a tag to compare

  • 修复未知 HTTP 头支持
  • 修复未知文件 mimetype
  • 删除冗余依赖