丁云鹏 81e2eac3c6 init пре 2 дана
..
README.md f5142e05c8 init пре 4 дана
evaluate.py 81e2eac3c6 init пре 2 дана
multi_thread_scheduler.py f5142e05c8 init пре 4 дана
start_evaluate.sh 81e2eac3c6 init пре 2 дана

README.md

多线程结构化处理调度器

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

功能特点

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

文件说明

  • evaluate.py - 结构化处理核心模块
  • multi_thread_scheduler.py - 多线程调度器主程序
  • logging_config.py - 日志配置模块
  • start_evaluate.sh - 启动脚本(支持多种操作)
  • logs/ - 日志文件目录

使用方法

1. 启动调度器

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

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

# 带参数启动
python3 multi_thread_scheduler.py --query_word "关键词" --source_type "类型" --source_channel "渠道"

2. 查看运行状态

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

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

# 查看结构化处理日志
tail -f logs/Processor_*.log

3. 停止调度器

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

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

4. 重启调度器

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

配置说明

线程数量和处理间隔

multi_thread_scheduler.py 中修改:

scheduler = MultiThreadScheduler(
    thread_count=5,           # 工作线程数量(默认5个)
    interval_minutes=2,        # 每个线程处理数据的间隔(默认2分钟)
    query_word=None,           # 查询关键词
    source_type=None,          # 数据源类型
    source_channel=None        # 数据源渠道
)

查询条件

支持按以下条件筛选需要处理的数据:

  • query_word: 查询关键词
  • source_type: 数据源类型
  • source_channel: 数据源渠道

如果不指定条件,则处理所有符合条件的数据。

日志配置

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

  • 调度器日志:logs/evaluate_scheduler_YYYYMMDD.log
  • 结构化处理日志:logs/EvaluateProcessor_YYYYMMDD.log
  • 标准输出日志:logs/evaluate_scheduler_stdout.log

服务器部署建议

1. 使用screen或tmux

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

# 重新连接会话
screen -r evaluate

2. 使用systemd服务(推荐)

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

[Unit]
Description=Evaluate Processing Scheduler
After=network.target

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

[Install]
WantedBy=multi-user.target

启用服务:

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

3. 使用crontab监控

# 编辑crontab
crontab -e

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

日志查看技巧

1. 实时监控日志

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

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

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

2. 日志搜索

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

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

# 搜索特定线程的日志
grep "EvaluateeWorkerThread-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_evaluate.sh 2. 路径配置: 确保所有路径都是绝对路径或正确的相对路径 3. 环境变量: 确保数据库连接等环境变量已正确配置 4. 资源监控: 定期监控服务器资源使用情况 5. 备份策略: 定期备份重要的配置和日志文件 ## 联系支持 如果遇到问题,请: 1. 查看相关日志文件 2. 检查系统资源使用情况 3. 确认配置是否正确 4. 联系技术支持团队