apscheduler定时任务运行时内他的next_run_time是否已经是下一次运行时间
python版本:3.10.5
apscheduler版本:3.10.1
如题,我做到一个关于要查询任务运行没的时候突然需要查到next_run_time的时间有没有到下一次
简单说解释如果任务正在运行,那么我去查询该任务的下一次运行时间,是否变化。
以下是测试代码(注:如果二次运行要记得删除jobs.sqlite,因为我懒得启动数据库管理工具去删除)
from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore
from datetime import datetime, timedelta
import time
def my_job():
"""一个简单的任务,仅打印当前时间。"""
print(f"任务运行中: {datetime.now()}")
print(f"下一次运行时间{scheduler.get_job('my_job_id').next_run_time}")
time.sleep(10)
print(f"任务运行结束: {datetime.now()}")
# 使用SQLite作为存储
jobstores = {
'default': SQLAlchemyJobStore(url='sqlite:///jobs.sqlite')
}
scheduler = BackgroundScheduler(jobstores=jobstores)
scheduler.start()
# 添加一个每10秒执行一次的任务
job = scheduler.add_job(my_job, 'interval', seconds=20, id='my_job_id')
print(f"任务添加成功,下次运行时间是: {job.next_run_time}")
# 为了保持脚本运行,不立刻关闭
try:
while True:
time.sleep(2)
except (KeyboardInterrupt, SystemExit):
scheduler.shutdown()
运行结果:
任务添加成功,下次运行时间是: 2023-08-15 22:35:30.912443+08:00
任务运行中: 2023-08-15 22:35:30.919477
下一次运行时间2023-08-15 22:35:50.912443+08:00
任务运行结束: 2023-08-15 22:35:41.037717
任务运行中: 2023-08-15 22:35:51.031062
下一次运行时间2023-08-15 22:36:10.912443+08:00
任务运行结束: 2023-08-15 22:36:01.146674
任务运行中: 2023-08-15 22:36:11.024150
下一次运行时间2023-08-15 22:36:30.912443+08:00
任务运行结束: 2023-08-15 22:36:21.135388
结论
确实可以嗷嗷,在运行时查询到的next_run_time已经被修改了
说明调度器在启动任务之后立马就修改了next_run_time
方法可行,但是这有啥用呢。。。。。。。。。