jihuaqiang 55831e0df7 处理无类别的记录 4 日 前
..
README.md 4bd4ded140 多线程版本改造 5 日 前
image_identifier.py dfad1ed4a1 内容理解脚本 1 週間 前
indentify.py 55831e0df7 处理无类别的记录 4 日 前
install_deps.sh dfad1ed4a1 内容理解脚本 1 週間 前
multi_thread_scheduler.py 4bd4ded140 多线程版本改造 5 日 前
requirements.txt dfad1ed4a1 内容理解脚本 1 週間 前
scheduler.pid 55831e0df7 处理无类别的记录 4 日 前
start_scheduler.sh 4bd4ded140 多线程版本改造 5 日 前
video_identifier.py e5aaed820e 视频理解脚本完善 6 日 前

README.md

多线程内容识别调度器

这是一个多线程定时任务调度器,用于自动处理内容识别任务。在服务器上运行时,所有日志都会保存到文件中,方便查看和调试。

功能特点

  • 🚀 多线程并发处理,提高处理效率
  • 📝 完整的日志记录,支持文件和控制台输出
  • 🕐 定时任务调度,可配置处理间隔
  • 🛑 优雅退出,支持信号处理
  • 🔧 进程管理,支持启动、停止、重启、状态查看

文件说明

  • multi_thread_scheduler.py - 多线程调度器主程序
  • indentify.py - 内容识别处理模块
  • logging_config.py - 日志配置模块
  • start_scheduler.sh - 启动脚本(支持多种操作)
  • logs/ - 日志文件目录

使用方法

1. 启动调度器

# 启动调度器(后台运行)
./start_scheduler.sh start

# 或者直接运行Python脚本(前台运行)
python3 multi_thread_scheduler.py

2. 查看运行状态

# 查看调度器状态
./start_scheduler.sh status

# 查看实时日志
tail -f logs/scheduler_*.log

# 查看内容识别日志
tail -f logs/content_identifier_*.log

3. 停止调度器

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

# 强制停止(如果优雅停止失败)
kill -KILL $(cat scheduler.pid)

4. 重启调度器

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

配置说明

线程数量和处理间隔

multi_thread_scheduler.py 中修改:

scheduler = MultiThreadScheduler(thread_count=5, interval_minutes=2)
  • thread_count: 工作线程数量(默认5个)
  • interval_minutes: 每个线程处理数据的间隔(默认2分钟)

日志配置

日志文件会自动按日期命名:

  • 调度器日志:logs/scheduler_YYYYMMDD.log
  • 内容识别日志:logs/content_identifier_YYYYMMDD.log
  • 标准输出日志:logs/scheduler_stdout.log

服务器部署建议

1. 使用screen或tmux

# 使用screen
screen -S scheduler
./start_scheduler.sh start
# 按 Ctrl+A 然后按 D 分离会话

# 重新连接会话
screen -r scheduler

2. 使用systemd服务(推荐)

创建服务文件 /etc/systemd/system/content-scheduler.service

[Unit]
Description=Content Recognition Scheduler
After=network.target

[Service]
Type=forking
User=your_username
WorkingDirectory=/path/to/your/project
ExecStart=/path/to/your/project/content_indentify/start_scheduler.sh start
ExecStop=/path/to/your/project/content_indentify/start_scheduler.sh stop
PIDFile=/path/to/your/project/content_indentify/scheduler.pid
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

启用服务:

sudo systemctl daemon-reload
sudo systemctl enable content-scheduler
sudo systemctl start content-scheduler
sudo systemctl status content-scheduler

3. 使用crontab监控

# 编辑crontab
crontab -e

# 添加监控任务(每5分钟检查一次)
*/5 * * * * /path/to/your/project/content_indentify/start_scheduler.sh status > /dev/null 2>&1 || /path/to/your/project/content_indentify/start_scheduler.sh restart

日志查看技巧

1. 实时监控日志

# 监控所有日志
tail -f logs/*.log

# 监控特定日志
tail -f logs/scheduler_$(date +%Y%m%d).log

# 监控错误日志
tail -f logs/*.log | grep ERROR

2. 日志搜索

# 搜索特定关键词
grep "ERROR" logs/*.log

# 搜索特定时间段的日志
grep "2024-01-15" logs/*.log

# 搜索特定线程的日志
grep "WorkerThread-1" logs/*.log

3. 日志分析

# 统计错误数量
grep -c "ERROR" logs/*.log

# 查看处理成功的记录
grep -c "数据处理成功" logs/*.log

# 查看处理失败的记录
grep -c "处理失败" logs/*.log

故障排除

1. 调度器无法启动

  • 检查Python环境和依赖包
  • 检查数据库连接配置
  • 查看错误日志

2. 调度器意外停止

  • 检查系统资源(内存、CPU)
  • 查看错误日志
  • 检查数据库连接状态

3. 日志文件过大

  • 定期清理旧日志文件
  • 调整日志级别
  • 使用logrotate进行日志轮转

注意事项

  1. 权限设置: 确保脚本有执行权限 bash chmod +x start_scheduler.sh 2. 路径配置: 确保所有路径都是绝对路径或正确的相对路径 3. 环境变量: 确保数据库连接等环境变量已正确配置 4. 资源监控: 定期监控服务器资源使用情况 5. 备份策略: 定期备份重要的配置和日志文件 ## 联系支持 如果遇到问题,请: 1. 查看相关日志文件 2. 检查系统资源使用情况 3. 确认配置是否正确 4. 联系技术支持团队