BodyBalanceEvaluation/install/README.md
2025-08-13 14:17:50 +08:00

200 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 最小功能测试框架
## 概述
这是一个最小功能测试框架,用于验证 Flask + SocketIO + threading 技术栈在打包成 exe 后的可用性。
## 功能特性
- ✅ Flask HTTP 服务
- ✅ SocketIO WebSocket 服务
- ✅ 强制使用 threading 异步模式
- ✅ 完整的前端测试界面
- ✅ HTTP API 测试
- ✅ WebSocket 连接测试
- ✅ 实时消息收发测试
- ✅ 系统信息显示
## 文件结构
```
install/
├── minimal_test_app.py # 主应用文件
├── build_minimal.py # 打包脚本
├── requirements_minimal.txt # 最小依赖列表
└── README.md # 说明文档
```
## 快速开始
### 1. 安装依赖
```bash
pip install -r requirements_minimal.txt
```
### 2. 测试运行
```bash
python minimal_test_app.py
```
然后在浏览器中访问 http://localhost:5000 进行测试。
### 3. 打包成 exe
```bash
python build_minimal.py
```
### 4. 测试 exe
打包完成后,运行:
```bash
# 方式1直接运行
dist/MinimalTestApp.exe
# 方式2使用脚本
dist/start_test.bat
```
## 测试步骤
### HTTP API 测试
1. 点击「测试 HTTP API」按钮
2. 确认返回成功响应
3. 检查响应数据包含服务器信息
### WebSocket 测试
1. 页面加载时会自动连接 WebSocket
2. 确认连接状态显示为「已连接」
3. 点击「发送测试消息」
4. 确认能收到服务器响应
5. 测试断开和重连功能
### 系统信息检查
- 服务器时间:确认时间正确
- SocketIO模式确认显示为 "threading"
- Flask版本确认版本信息
## 技术要点
### 异步模式选择
```python
# 强制使用 threading 模式,避免 eventlet/gevent 依赖问题
socketio = SocketIO(
app,
cors_allowed_origins='*',
async_mode='threading', # 关键配置
logger=False,
engineio_logger=False
)
```
### 打包配置
```python
# PyInstaller 隐藏导入配置
hiddenimports=[
'flask',
'flask_socketio',
'socketio',
'engineio',
'engineio.async_drivers.threading', # 关键threading 驱动
'socketio.namespace',
'dns',
'dns.resolver',
'dns.asyncresolver'
],
# 排除不需要的异步模式
excludes=[
'eventlet',
'gevent',
'gevent_uwsgi'
]
```
## 故障排除
### 常见问题
1. **"Invalid async_mode specified" 错误**
- 确认已安装所有依赖
- 检查 PyInstaller 隐藏导入配置
- 确认排除了不需要的异步模式
2. **WebSocket 连接失败**
- 检查防火墙设置
- 确认端口 5000 未被占用
- 查看控制台错误信息
3. **打包失败**
- 确认 PyInstaller 版本兼容
- 检查依赖版本冲突
- 查看详细错误输出
### 调试模式
如需调试,可以修改 `minimal_test_app.py`
```python
# 启用调试模式
socketio.run(
app,
host='0.0.0.0',
port=5000,
debug=True, # 启用调试
allow_unsafe_werkzeug=True
)
```
## 扩展指南
### 添加新功能
1. **新增 HTTP 路由**
```python
@app.route('/api/new-endpoint')
def new_endpoint():
return jsonify({'message': 'New endpoint'})
```
2. **新增 SocketIO 事件**
```python
@socketio.on('new_event')
def handle_new_event(data):
emit('response', {'status': 'received'})
```
3. **添加依赖**
- 更新 `requirements_minimal.txt`
- 更新 `build_minimal.py` 中的 `hiddenimports`
- 重新测试打包
### 渐进式集成
按照以下顺序逐步添加业务功能:
1. ✅ 基础 Flask + SocketIO当前阶段
2. 🔄 添加数据库支持
3. 🔄 添加文件操作
4. 🔄 添加外部库依赖
5. 🔄 添加硬件设备支持
每个阶段都要确保打包和运行正常,出现问题时更容易定位。
## 版本信息
- Flask: 2.3.3
- Flask-SocketIO: 5.3.6
- PyInstaller: 6.1.0
- Python: 3.8+
## 许可证
MIT License