|
2 giờ trước cách đây | |
---|---|---|
.. | ||
README.md | 5 ngày trước cách đây | |
multi_thread_scheduler.py | 4 ngày trước cách đây | |
start_structure.sh | 5 ngày trước cách đây | |
structure_processor.py | 2 giờ trước cách đây | |
structure_scheduler.pid | 2 ngày trước cách đây |
这是一个多线程定时任务调度器,用于自动处理内容结构化任务。在服务器上运行时,所有日志都会保存到文件中,方便查看和调试。
structure_processor.py
- 结构化处理核心模块multi_thread_scheduler.py
- 多线程调度器主程序logging_config.py
- 日志配置模块start_structure.sh
- 启动脚本(支持多种操作)logs/
- 日志文件目录# 启动调度器(后台运行)
./start_structure.sh start
# 或者直接运行Python脚本(前台运行)
python3 multi_thread_scheduler.py
# 带参数启动
python3 multi_thread_scheduler.py --query_word "关键词" --source_type "类型" --source_channel "渠道"
# 查看调度器状态
./start_structure.sh status
# 查看实时日志
tail -f logs/structure_*.log
# 查看结构化处理日志
tail -f logs/StructureProcessor_*.log
# 优雅停止调度器
./start_structure.sh stop
# 强制停止(如果优雅停止失败)
kill -KILL $(cat structure_scheduler.pid)
# 重启调度器
./start_structure.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/structure_scheduler_YYYYMMDD.log
logs/StructureProcessor_YYYYMMDD.log
logs/structure_scheduler_stdout.log
# 使用screen
screen -S structure
./start_structure.sh start
# 按 Ctrl+A 然后按 D 分离会话
# 重新连接会话
screen -r structure
创建服务文件 /etc/systemd/system/structure-scheduler.service
:
[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
启用服务:
sudo systemctl daemon-reload
sudo systemctl enable structure-scheduler
sudo systemctl start structure-scheduler
sudo systemctl status structure-scheduler
# 编辑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
# 监控所有日志
tail -f logs/*.log
# 监控特定日志
tail -f logs/structure_scheduler_$(date +%Y%m%d).log
# 监控错误日志
tail -f logs/*.log | grep ERROR
# 搜索特定关键词
grep "ERROR" logs/*.log
# 搜索特定时间段的日志
grep "2024-01-15" logs/*.log
# 搜索特定线程的日志
grep "StructureWorkerThread-1" logs/*.log
# 统计错误数量
grep -c "ERROR" logs/*.log
# 查看处理成功的记录
grep -c "数据处理成功" logs/*.log
# 查看处理失败的记录
grep -c "处理失败" logs/*.log
bash
chmod +x start_structure.sh
2. 路径配置: 确保所有路径都是绝对路径或正确的相对路径
3. 环境变量: 确保数据库连接等环境变量已正确配置
4. 资源监控: 定期监控服务器资源使用情况
5. 备份策略: 定期备份重要的配置和日志文件
## 联系支持
如果遇到问题,请:
1. 查看相关日志文件
2. 检查系统资源使用情况
3. 确认配置是否正确
4. 联系技术支持团队