如何阻止APScheduler在控制台打印任务错过(Misfire)警告信息?
解决APScheduler添加事件监听器后仍输出红色警告的问题
问题核心:APScheduler的事件监听器与内置日志系统相互独立——即便你通过EVENT_JOB_MISSED和EVENT_JOB_ERROR捕获了事件,框架默认仍会通过日志输出警告信息。要解决这个问题,只需调整APScheduler的日志级别,屏蔽不需要的警告输出。
解决方案步骤
- 导入Python标准库的
logging模块 - 将APScheduler相关日志器的级别调整为
ERROR及以上(或直接设置为CRITICAL,彻底屏蔽非致命日志)
修改后的代码示例
def SetScheduler(): global shedul import logging from apscheduler.schedulers.background import BackgroundScheduler from apscheduler.events import EVENT_JOB_ERROR, EVENT_JOB_MISSED # 调整APScheduler日志级别,屏蔽警告 logging.getLogger('apscheduler').setLevel(logging.ERROR) shedul = BackgroundScheduler() shedul.add_listener(shed_listener, EVENT_JOB_MISSED | EVENT_JOB_ERROR)
更精准的日志控制(可选)
如果你只想屏蔽特定类型的警告,比如仅针对任务错过/错误的日志,可以定位到具体的日志器(例如输出警告的apscheduler.scheduler):
logging.getLogger('apscheduler.scheduler').setLevel(logging.ERROR)
这样既保留APScheduler其他重要日志,又能避免让普通用户看到不必要的红色警告。
内容的提问来源于stack exchange,提问作者MarcusAurelius
相关产品推荐
相关产品推荐

