# 内容识别调度器 这是一个多线程内容识别调度器,用于处理图片和视频内容识别任务。 ## 功能特性 - 多线程并发处理(默认5个线程) - 定时任务调度(默认每2分钟处理一条数据) - 自动错误恢复和进程监控 - 内存使用监控和垃圾回收 - 支持图片识别(Coze API)和视频识别(Gemini API) ## 安装依赖 ```bash # 安装Python依赖 pip install -r requirements.txt # 或者使用uv(推荐) uv sync ``` ## 使用方法 ### 1. 基本启动 ```bash # 启动调度器 ./start_scheduler.sh start # 查看状态 ./start_scheduler.sh status # 停止调度器 ./start_scheduler.sh stop # 重启调度器 ./start_scheduler.sh restart ``` ### 2. 监控模式(推荐) 监控模式会自动检测进程崩溃、内存异常等问题,并自动重启服务: ```bash # 启动监控模式 ./start_scheduler.sh monitor # 停止监控模式 ./start_scheduler.sh stop-monitor ``` 监控模式特性: - 自动检测进程崩溃并重启 - 内存使用监控(超过2GB自动重启) - 最大重启次数限制(10次) - 日志错误检测(包括double free错误) ### 3. 系统监控脚本 对于更高级的监控需求,可以使用独立的系统监控脚本: ```bash # 启动系统监控 python3 system_monitor.py ``` 系统监控功能: - 实时监控进程状态 - 系统资源使用监控(CPU、内存、磁盘) - 自动错误检测和恢复 - 详细的监控日志 ### 4. 缓存管理 管理视频识别过程中的临时缓存文件: ```bash # 查看缓存状态 ./start_scheduler.sh cache-status # 清理过期缓存文件 ./start_scheduler.sh cache-cleanup # 清理所有缓存文件 ./start_scheduler.sh cache-clean # 或者直接使用Python脚本 python3 cache_manager.py status python3 cache_manager.py cleanup ``` 缓存管理功能: - 自动清理过期缓存文件(默认1小时) - 手动清理缓存 - 缓存状态监控 - 防止磁盘空间占用过多 ## 配置说明 ### 环境变量 在项目根目录创建 `.env` 文件: ```env # 数据库配置 DB_HOST=localhost DB_PORT=3306 DB_USER=your_username DB_PASSWORD=your_password DB_NAME=your_database # API密钥 GEMINI_API_KEY=your_gemini_api_key COZE_API_KEY=your_coze_api_key # 其他配置 LOG_LEVEL=INFO ``` ### 调度器配置 在 `multi_thread_scheduler.py` 中可以调整以下参数: ```python class MultiThreadScheduler: def __init__(self, thread_count=5, interval_minutes=2): # thread_count: 工作线程数量 # interval_minutes: 处理间隔(分钟) self.max_memory_mb = 2048 # 最大内存使用量(MB) self.gc_interval = 300 # 垃圾回收间隔(秒) ``` ### 监控配置 在 `system_monitor.py` 中可以调整监控参数: ```python self.config = { 'max_memory_mb': 2048, # 最大内存使用量 'max_cpu_percent': 80, # 最大CPU使用率 'max_disk_percent': 90, # 最大磁盘使用率 'check_interval': 30, # 检查间隔(秒) 'restart_delay': 60, # 重启延迟(秒) 'max_restarts': 5, # 最大重启次数 } ``` ## 故障排除 ### Double Free 错误 如果遇到 "double free or corruption (!prev)" 错误: 1. **使用监控模式**: ```bash ./start_scheduler.sh monitor ``` 2. **检查内存使用**: ```bash ./start_scheduler.sh status ``` 3. **查看详细日志**: ```bash tail -f logs/scheduler_*.log tail -f logs/system_monitor.log ``` 4. **手动重启**: ```bash ./start_scheduler.sh restart ``` ### 常见问题 1. **进程启动失败** - 检查Python环境和依赖 - 查看日志文件中的错误信息 - 确保数据库连接正常 2. **内存使用过高** - 调整 `max_memory_mb` 参数 - 检查是否有内存泄漏 - 使用监控模式自动重启 3. **API调用失败** - 检查API密钥配置 - 确认网络连接正常 - 查看API调用日志 ## 日志文件 - `logs/scheduler_stdout.log` - 调度器标准输出 - `logs/scheduler_*.log` - 调度器日志文件 - `logs/system_monitor.log` - 系统监控日志 - `logs/monitor.log` - 监控模式日志 ## 性能优化建议 1. **调整线程数量**:根据服务器CPU核心数调整 `thread_count` 2. **优化内存使用**:定期清理缓存文件,监控内存使用 3. **数据库优化**:确保数据库索引合理,避免慢查询 4. **网络优化**:使用CDN加速图片和视频下载 ## 安全注意事项 1. **API密钥保护**:不要在代码中硬编码API密钥 2. **文件权限**:确保脚本文件有执行权限 3. **日志安全**:定期清理敏感日志信息 4. **进程监控**:限制监控脚本的权限 ## 技术支持 如果遇到问题,请: 1. 查看相关日志文件 2. 检查系统资源使用情况 3. 确认配置参数是否正确 4. 尝试使用监控模式自动恢复 ## 更新日志 - v2.0.0: 添加监控模式和自动重启功能 - v1.1.0: 改进内存管理和错误处理 - v1.0.0: 基础多线程调度器