# fastapi-services **Repository Path**: NativeBase/fastapi-services ## Basic Information - **Project Name**: fastapi-services - **Description**: 这是一个基于微服务架构的YOLO目标检测系统。 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-15 - **Last Updated**: 2025-12-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # YOLO Drill Services 这是一个基于微服务架构的YOLO目标检测系统。 ## 服务架构 1. **网关服务 (Gateway)** - 入口点,负责路由和负载均衡(位于项目根目录的 [main.py](file:///Volumes/MAC-DATA/job/yolo-drill-services/main.py)) 2. **用户服务 (User Service)** - 用户认证和管理 3. **视频服务 (Video Service)** - 视频上传、存储和预处理 4. **检测服务 (Detection Service)** - 使用YOLO模型进行目标检测 5. **训练服务 (Training Service)** - 模型训练和优化 6. **任务服务 (Task Service)** - 异步任务管理和调度 7. **标记服务 (Label Service)** - 标记管理 8. **门户网站 (Web Portal)** - 前端用户界面 ## 技术栈 - FastAPI 作为主要框架 - YOLOv8 用于目标检测 - SQLAlchemy 用于数据库访问 - Requests 用于服务间通信 ## 项目结构 ``` yolo-drill-services/ ├── config/ # 配置文件 ├── shared/ # 共享组件 │ ├── models/ # 数据库模型 │ ├── schemas/ # 数据验证模型 │ ├── middleware/ # 中间件 │ └── lifespan/ # 生命周期管理 ├── services/ # 各个微服务 │ ├── user/ # 用户服务 │ ├── video/ # 视频服务 │ ├── detection/ # 检测服务 │ ├── task/ # 任务服务 │ ├── training/ # 训练服务 │ ├── label/ # 标记服务 │ └── web-portal/ # 门户网站 ├── outputs/ # 输出文件目录 └── logs/ # 日志文件目录 ``` ## 快速开始 ### 安装依赖 所有服务共享同一个依赖文件: ```bash pip install -r requirements.txt ``` ### 数据库初始化 在启动服务之前,需要初始化数据库: ```bash python init_db.py ``` ### 启动服务 有两种方式启动服务: ### 方式一:使用启动脚本(推荐) ```bash # 启动所有服务 python start_services.py ``` ### 方式二:手动启动各个服务 在不同的终端窗口中分别运行以下命令: ```bash # 启动网关服务 uvicorn main:app --host 0.0.0.0 --port 8040 --reload # 启动门户网站 uvicorn services/web-portal/app/main:app --host 0.0.0.0 --port 8030 --reload # 启动用户服务 uvicorn services/user/app/main:app --host 0.0.0.0 --port 8031 --reload # 启动视频服务 uvicorn services/video/app/main:app --host 0.0.0.0 --port 8032 --reload # 启动检测服务 uvicorn services/detection/app/main:app --host 0.0.0.0 --port 8033 --reload # 启动任务服务 uvicorn services/task/app/main:app --host 0.0.0.0 --port 8034 --reload # 启动训练服务 uvicorn services/training/app/main:app --host 0.0.0.0 --port 8035 --reload # 启动标记服务 uvicorn services.label.app.main:app --host 0.0.0.0 --port 8037 --reload ``` ## 统一响应格式 所有API接口都使用统一的响应格式: ### 单对象响应 ```json { "code": 200, "message": "操作成功", "data": {} } ``` ### 列表响应 ```json { "code": 200, "message": "操作成功", "data": [], "total": 100, "page": 1, "size": 10 } ``` ## 服务访问地址 通过网关访问: - 用户服务: http://localhost:8040/user-service - 视频服务: http://localhost:8040/video-service - 检测服务: http://localhost:8040/detection-service - 任务服务: http://localhost:8040/task-service - 训练服务: http://localhost:8040/training-service - 标记服务: http://localhost:8040/label-service - 门户网站: http://localhost:8040/web-portal 直接访问服务: - 用户服务: http://localhost:8031 - 视频服务: http://localhost:8032 - 检测服务: http://localhost:8033 - 任务服务: http://localhost:8034 - 训练服务: http://localhost:8035 - 标记服务: http://localhost:8037 - 门户网站: http://localhost:8030 - 网关服务: http://localhost:8040 每个服务都提供了交互式的 API 文档,可以通过 `/docs` 端点访问。 ## 故障排除 1. **网关服务无法启动**: - 检查是否安装了 requests 包 - 确保端口 8040 未被占用 2. **服务无法通过网关访问**: - 确保目标服务已启动并在正确端口监听 - 检查网关服务中的 SERVICE_URLS 配置 3. **依赖问题**: - 运行 `pip install -r requirements.txt` 安装所有依赖 4. **数据库问题**: - 确保已运行 `python init_db.py` 初始化数据库 - 检查数据库文件权限 5. **端口冲突**: - 检查是否有其他进程占用了服务端口 - 可以使用 `lsof -i :端口号` 查看端口占用情况