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 支持
- 会话管理
📝 贡献指南
开发规范
- 代码风格:遵循 PEP 8 规范,使用 Ruff 进行检查
- 类型注解:所有函数和方法都必须添加类型注解
- 文档字符串:所有公共函数和类都必须添加文档字符串
- 测试覆盖:新功能必须添加相应的测试用例
提交规范
使用 Conventional Commits 规范:
feat:新功能fix:修复 bugdocs:文档更新style:代码格式调整refactor:代码重构test:测试相关chore:构建或工具相关
📄 许可证
MIT License
🤝 联系我们
如有任何问题或建议,请提交 Issue 或 Pull Request。
Yitech FastAPI - 现代化的异步后端服务框架
Project details
Release history Release notifications | RSS feed
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)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e6e206fd57ae2696e7b89daae0987c11570c15d7479ca96c0c8e60f1db01c2cc
|
|
| MD5 |
3f5e926016549e147e5b29ca374a7458
|
|
| BLAKE2b-256 |
81281b674576565ba34dbcea070a7f668acaaa139a148d1df7f2bae792eb5683
|
File details
Details for the file yitech_fastapi-0.3.0-py3-none-any.whl.
File metadata
- Download URL: yitech_fastapi-0.3.0-py3-none-any.whl
- Upload date:
- Size: 29.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.22
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
41fb9a4b437c1c46a5f8c3440063df281c3bf8c8e65f3f35368e7da156ad66c8
|
|
| MD5 |
0eb551fdc00f2314e3a309bed20ed8bf
|
|
| BLAKE2b-256 |
ddea7379f3e78ead1511743e8f1fa6c6f9f44c54ee9ceec33cd4b3c272d28276
|