Skip to main content

Add your description here

Project description

Yitech FastAPI

一个基于 FastAPI 构建的现代后端服务框架,采用分层架构设计,支持异步操作、事件驱动和任务队列。

🚀 技术栈

核心框架

  • FastAPI >=0.128.0 - 高性能异步 Web 框架
  • Python >=3.12 - 编程语言

数据库

  • yi_db (集成在 yitool 中) - 统一数据库抽象层,支持多种数据库后端
  • SQLAlchemy >=2.0.45 - 异步 ORM (yi_db 内部使用)
  • Alembic >=1.17.2 - 数据库迁移工具

缓存与会话

  • Redis >=7.1.0 - 缓存和会话存储
  • aioredis >=2.0.1 - Redis 异步客户端

任务队列

  • Celery >=5.3.1 - 分布式任务队列

认证与安全

  • python-jose >=3.5.0 - JWT 认证
  • passlib >=1.7.4 - 密码哈希
  • bcrypt ==4.0.1 - 密码加密算法

数据验证

  • Pydantic >=2.12.5 - 数据验证和设置管理
  • pydantic-settings >=2.12.0 - 配置管理
  • email-validator >=2.3.0 - 邮箱验证

开发工具

  • Ruff >=0.6.0 - 代码检查器
  • Mypy >=1.19.1 - 静态类型检查
  • Pytest >=9.0.2 - 测试框架
  • pytest-asyncio >=1.3.0 - 异步测试支持
  • HTTPX >=0.28.1 - HTTP 客户端
  • UV - 依赖管理工具

📦 快速开始

安装依赖

# 使用 UV 安装依赖
uv install

# 安装开发依赖
uv install -g dev

配置环境变量

创建 .env 文件并配置必要的环境变量:

# 复制示例配置
cp application.yml.example application.yml

# 编辑配置文件
vim application.yml

数据库迁移

# 创建迁移脚本
uv run alembic revision --autogenerate -m "Initial migration"

# 执行迁移
uv run alembic upgrade head

启动服务

# 启动 Web 服务
./bin/run_fast.sh

# 启动 Celery Worker
./bin/run_celery.sh

访问 API 文档

  • Swagger UI: http://localhost:8000/docs
  • ReDoc: http://localhost:8000/redoc

📁 项目结构

├── alembic/              # 数据库迁移
├── bin/                  # 脚本文件
├── src/                  # 主代码目录
│   ├── events/           # 事件系统
│   ├── health/           # 健康检查
│   ├── helpers/          # 辅助功能
│   ├── routes/           # 路由模块
│   │   ├── auth/         # 认证模块
│   │   └── users/        # 用户模块
│   ├── tasks/            # 异步任务
│   ├── utils/            # 工具函数
│   ├── app.py            # 应用配置
│   ├── config.py         # 配置管理
│   └── main.py           # 应用入口
├── tests/                # 测试代码
│   ├── api/              # API 测试
│   └── unit/             # 单元测试
├── alembic.ini           # Alembic 配置
├── application.yml       # 应用配置
├── pyproject.toml        # 项目元数据和依赖
└── uv.lock               # 依赖锁定

🛠️ 开发流程

代码检查

# 运行 Ruff 代码检查
./bin/run_lint.sh

类型检查

uv run mypy src/

运行测试

# 运行所有测试
./bin/run_test.sh

🧪 测试

项目使用 Pytest 进行测试,支持异步测试。测试文件位于 tests/ 目录下,主要包括:

  • 单元测试
  • 集成测试
  • API 测试

测试配置

测试使用内存数据库和内存会话存储,避免外部依赖。配置文件位于 tests/conftest.py

🚀 部署

生产环境

# 安装生产依赖
uv install --no-dev

# 启动生产服务
uv run uvicorn src.main:app --host 0.0.0.0 --port 8000 --workers 4

Docker 部署

# 构建 Docker 镜像
docker build -t yitech-fastapi .

# 运行 Docker 容器
docker run -d -p 8000:8000 --env-file .env yitech-fastapi

🔧 核心功能

用户认证与授权

  • JWT 认证
  • 密码哈希与验证
  • 权限控制

用户管理

  • 用户创建、查询、更新和删除
  • 用户信息验证
  • 用户密码重置

会话管理

  • 基于 yitool 的会话管理
  • 会话过期管理
  • 会话验证

异步任务处理

  • Celery 任务队列
  • 定时任务
  • 任务结果跟踪

事件系统

  • 事件发布与订阅
  • 事件处理
  • 异步事件支持

中间件

  • 请求 ID 跟踪
  • 请求日志记录
  • CORS 支持
  • 会话管理

📝 贡献指南

开发规范

  1. 代码风格:遵循 PEP 8 规范,使用 Ruff 进行检查
  2. 类型注解:所有函数和方法都必须添加类型注解
  3. 文档字符串:所有公共函数和类都必须添加文档字符串
  4. 测试覆盖:新功能必须添加相应的测试用例

提交规范

使用 Conventional Commits 规范:

  • feat: 新功能
  • fix: 修复 bug
  • docs: 文档更新
  • style: 代码格式调整
  • refactor: 代码重构
  • test: 测试相关
  • chore: 构建或工具相关

📄 许可证

MIT License

🤝 联系我们

如有任何问题或建议,请提交 Issue 或 Pull Request。


Yitech FastAPI - 现代化的异步后端服务框架

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yitech_fastapi-0.3.0.tar.gz (27.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

yitech_fastapi-0.3.0-py3-none-any.whl (29.2 kB view details)

Uploaded Python 3

File details

Details for the file yitech_fastapi-0.3.0.tar.gz.

File metadata

  • Download URL: yitech_fastapi-0.3.0.tar.gz
  • Upload date:
  • Size: 27.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.22

File hashes

Hashes for yitech_fastapi-0.3.0.tar.gz
Algorithm Hash digest
SHA256 e6e206fd57ae2696e7b89daae0987c11570c15d7479ca96c0c8e60f1db01c2cc
MD5 3f5e926016549e147e5b29ca374a7458
BLAKE2b-256 81281b674576565ba34dbcea070a7f668acaaa139a148d1df7f2bae792eb5683

See more details on using hashes here.

File details

Details for the file yitech_fastapi-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for yitech_fastapi-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 41fb9a4b437c1c46a5f8c3440063df281c3bf8c8e65f3f35368e7da156ad66c8
MD5 0eb551fdc00f2314e3a309bed20ed8bf
BLAKE2b-256 ddea7379f3e78ead1511743e8f1fa6c6f9f44c54ee9ceec33cd4b3c272d28276

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page