# 多线程结构化处理调度器 这是一个多线程定时任务调度器,用于自动处理内容结构化任务。在服务器上运行时,所有日志都会保存到文件中,方便查看和调试。 ## 功能特点 - 🚀 多线程并发处理,提高处理效率 - 📝 完整的日志记录,支持文件和控制台输出 - 🕐 定时任务调度,可配置处理间隔 - 🛑 优雅退出,支持信号处理 - 🔧 进程管理,支持启动、停止、重启、状态查看 - 🎯 支持按条件筛选处理(query_word、source_type、source_channel) ## 文件说明 - `structure_processor.py` - 结构化处理核心模块 - `multi_thread_scheduler.py` - 多线程调度器主程序 - `logging_config.py` - 日志配置模块 - `start_structure.sh` - 启动脚本(支持多种操作) - `logs/` - 日志文件目录 ## 使用方法 ### 1. 启动调度器 ```bash # 启动调度器(后台运行) ./start_structure.sh start # 或者直接运行Python脚本(前台运行) python3 multi_thread_scheduler.py # 带参数启动 python3 multi_thread_scheduler.py --query_word "关键词" --source_type "类型" --source_channel "渠道" ``` ### 2. 查看运行状态 ```bash # 查看调度器状态 ./start_structure.sh status # 查看实时日志 tail -f logs/structure_*.log # 查看结构化处理日志 tail -f logs/StructureProcessor_*.log ``` ### 3. 停止调度器 ```bash # 优雅停止调度器 ./start_structure.sh stop # 强制停止(如果优雅停止失败) kill -KILL $(cat structure_scheduler.pid) ``` ### 4. 重启调度器 ```bash # 重启调度器 ./start_structure.sh restart ``` ## 配置说明 ### 线程数量和处理间隔 在 `multi_thread_scheduler.py` 中修改: ```python 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/structure_scheduler_YYYYMMDD.log` - 结构化处理日志:`logs/StructureProcessor_YYYYMMDD.log` - 标准输出日志:`logs/structure_scheduler_stdout.log` ## 服务器部署建议 ### 1. 使用screen或tmux ```bash # 使用screen screen -S structure ./start_structure.sh start # 按 Ctrl+A 然后按 D 分离会话 # 重新连接会话 screen -r structure ``` ### 2. 使用systemd服务(推荐) 创建服务文件 `/etc/systemd/system/structure-scheduler.service`: ```ini [Unit] Description=Structure Processing Scheduler After=network.target [Service] Type=forking User=your_username WorkingDirectory=/path/to/your/project/structure ExecStart=/path/to/your/project/structure/start_structure.sh start ExecStop=/path/to/your/project/structure/start_structure.sh stop PIDFile=/path/to/your/project/structure/structure_scheduler.pid Restart=always RestartSec=10 [Install] WantedBy=multi-user.target ``` 启用服务: ```bash sudo systemctl daemon-reload sudo systemctl enable structure-scheduler sudo systemctl start structure-scheduler sudo systemctl status structure-scheduler ``` ### 3. 使用crontab监控 ```bash # 编辑crontab crontab -e # 添加监控任务(每5分钟检查一次) */5 * * * * /path/to/your/project/structure/start_structure.sh status > /dev/null 2>&1 || /path/to/your/project/structure/start_structure.sh restart ``` ## 日志查看技巧 ### 1. 实时监控日志 ```bash # 监控所有日志 tail -f logs/*.log # 监控特定日志 tail -f logs/structure_scheduler_$(date +%Y%m%d).log # 监控错误日志 tail -f logs/*.log | grep ERROR ``` ### 2. 日志搜索 ```bash # 搜索特定关键词 grep "ERROR" logs/*.log # 搜索特定时间段的日志 grep "2024-01-15" logs/*.log # 搜索特定线程的日志 grep "StructureWorkerThread-1" logs/*.log ``` ### 3. 日志分析 ```bash # 统计错误数量 grep -c "ERROR" logs/*.log # 查看处理成功的记录 grep -c "数据处理成功" logs/*.log # 查看处理失败的记录 grep -c "处理失败" logs/*.log ``` ## 故障排除 ### 1. 调度器无法启动 - 检查Python环境和依赖包 - 检查数据库连接配置 - 查看错误日志 ### 2. 调度器意外停止 - 检查系统资源(内存、CPU) - 查看错误日志 - 检查数据库连接状态 ### 3. 日志文件过大 - 定期清理旧日志文件 - 调整日志级别 - 使用logrotate进行日志轮转 ## 注意事项 1. **权限设置**: 确保脚本有执行权限 ```bash chmod +x start_structure.sh ``` 2. **路径配置**: 确保所有路径都是绝对路径或正确的相对路径 3. **环境变量**: 确保数据库连接等环境变量已正确配置 4. **资源监控**: 定期监控服务器资源使用情况 5. **备份策略**: 定期备份重要的配置和日志文件 ## 联系支持 如果遇到问题,请: 1. 查看相关日志文件 2. 检查系统资源使用情况 3. 确认配置是否正确 4. 联系技术支持团队