排查生产一个Python APScheduler的定时任务问题

现象:部分Spark流程序未通过定时任务成功重启。分析:通过YARN集群获取流程序列表,并根据启动时间分析,发现自动重启仅限于mysql和oracle类型,其他类型未被触发。检查Python脚本日志:聚焦:检查app.restart_apps函数的调用记录。发现:有9个流程序被成功重启,其他应用类型的程序未见执行记录,表明APScheduler...
排查生产一个Python APScheduler的定时任务问题
排查Python APScheduler定时任务问题的步骤及解决方案如下:
确认问题范围:
现象:部分Spark流程序未通过定时任务成功重启。分析:通过YARN集群获取流程序列表,并根据启动时间分析,发现自动重启仅限于mysql和oracle类型,其他类型未被触发。检查Python脚本日志:
聚焦:检查app.restart_apps函数的调用记录。发现:有9个流程序被成功重启,其他应用类型的程序未见执行记录,表明APScheduler的定时任务未能调度这些应用执行。分析nohup日志:
问题:触发间隔与预期执行时间不符,触发间隔被延迟约1分钟。影响:导致实际执行时间与预定时间出现偏差,可能是触发了调度任务但未被执行。检查APScheduler配置:
配置问题:misfire_grace_time被设置为60秒。分析:如果任务在60秒内未启动,系统会判定为错过执行,考虑到Spark任务启动所需时间,这可能是导致部分任务未能按时执行的原因。解决方案:
调整配置:将misfire_grace_time设置为None。效果:无论任务何时启动,都能确保其执行,避免了因错过预设执行时间而导致的任务未执行问题。总结: 通过分析YARN集群的流程序列表和Python脚本日志,确定了问题范围。 通过检查nohup日志和APScheduler配置,找到了问题的具体原因。 通过调整misfire_grace_time配置,解决了定时任务未能按时执行的问题。
2025-03-31
mengvlog 阅读 10 次 更新于 2025-07-19 07:27:43 我来答关注问题0
檬味博客在线解答立即免费咨询

报错相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部