问题解决:使用BlockingScheduler代替BackgroundScheduler
解决问题的具体方法为将BackgroundScheduler替换为BlockingScheduler,使用BlockingScheduler时,每个job将直接运行在主线程中,等待job完成时再执行下一个job,而BackgroundScheduler将job提交到线程池中后会立即返回,而提交的job不一定立即运行,当job堆积很多时,会导致Job Miss。
示例代码如下:
from apscheduler.schedulers.blocking import BlockingScheduler
scheduler = BlockingScheduler()
@scheduler.scheduled_job('cron', second='*/5')
def scheduled_job():
print('This job is run every 5 seconds.')
scheduler.start()