jihuaqiang e302331ba8 异常退出问题解决 преди 14 часа
..
README.md e302331ba8 异常退出问题解决 преди 14 часа
cache_manager.py e302331ba8 异常退出问题解决 преди 14 часа
image_identifier.py dfad1ed4a1 内容理解脚本 преди 1 седмица
indentify.py 778f4baec6 1 преди 17 часа
install_deps.sh dfad1ed4a1 内容理解脚本 преди 1 седмица
multi_thread_scheduler.py e302331ba8 异常退出问题解决 преди 14 часа
requirements.txt e302331ba8 异常退出问题解决 преди 14 часа
start_scheduler.sh e302331ba8 异常退出问题解决 преди 14 часа
system_monitor.py e302331ba8 异常退出问题解决 преди 14 часа
video_identifier.py e302331ba8 异常退出问题解决 преди 14 часа

README.md

内容识别调度器

这是一个多线程内容识别调度器,用于处理图片和视频内容识别任务。

功能特性

  • 多线程并发处理(默认5个线程)
  • 定时任务调度(默认每2分钟处理一条数据)
  • 自动错误恢复和进程监控
  • 内存使用监控和垃圾回收
  • 支持图片识别(Coze API)和视频识别(Gemini API)

安装依赖

# 安装Python依赖
pip install -r requirements.txt

# 或者使用uv(推荐)
uv sync

使用方法

1. 基本启动

# 启动调度器
./start_scheduler.sh start

# 查看状态
./start_scheduler.sh status

# 停止调度器
./start_scheduler.sh stop

# 重启调度器
./start_scheduler.sh restart

2. 监控模式(推荐)

监控模式会自动检测进程崩溃、内存异常等问题,并自动重启服务:

# 启动监控模式
./start_scheduler.sh monitor

# 停止监控模式
./start_scheduler.sh stop-monitor

监控模式特性:

  • 自动检测进程崩溃并重启
  • 内存使用监控(超过2GB自动重启)
  • 最大重启次数限制(10次)
  • 日志错误检测(包括double free错误)

3. 系统监控脚本

对于更高级的监控需求,可以使用独立的系统监控脚本:

# 启动系统监控
python3 system_monitor.py

系统监控功能:

  • 实时监控进程状态
  • 系统资源使用监控(CPU、内存、磁盘)
  • 自动错误检测和恢复
  • 详细的监控日志

4. 缓存管理

管理视频识别过程中的临时缓存文件:

# 查看缓存状态
./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 文件:

# 数据库配置
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 中可以调整以下参数:

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 中可以调整监控参数:

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. 使用监控模式

    ./start_scheduler.sh monitor
    
    1. 检查内存使用bash ./start_scheduler.sh status
  2. 查看详细日志

    tail -f logs/scheduler_*.log
    tail -f logs/system_monitor.log
    
    1. 手动重启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: 基础多线程调度器