job的时间类型为date时,无法修改job参数
因为date是执行一次之后就会销毁。修改参数时无法找到任务。
只有非date类型时,才可以修改参数
当前时间10秒后开始任务:
job = scheduler.add_job(func, 'cron', id=job_id, second='*/10')
# 或者
job = scheduler.add_job(func, 'cron', args=['cron'], id=job_id, second='*/10')
# 启动
scheduler.start()
def func(trigger):
# 执行业务参数
# 业务结束之后 再次调用自己。下次任务在当前时间1小时后继续执行 hour是正整时
scheduler.reschedule_job(job_id, trigger='cron', hour='*/1')
demo
#!usr/bin/env python
import time
import logging
from datetime import datetime
from apscheduler.schedulers.background import BackgroundScheduler
def func(trigger):
print(trigger, datetime.now())
logging.getLogger('apscheduler').setLevel(logging.DEBUG) # 调度器日志级别
scheduler = BackgroundScheduler()
time_now = datetime.now()
scheduler.add_job(func, 'cron', args=['cron'], hour=time_now.hour, minute=time_now.minute, second=time_now.second + 3) # 定时调度
# max_instances表示最多启动几个任务实例,replace_existing表示新的实例是否替换仍未结束的旧实例
scheduler.add_job(func, 'interval', kwargs={'trigger': 'interval'}, seconds=1, max_instances=1, next_run_time=time_now) # 循环调度
scheduler.start()
time.sleep(3)
print('暂停调度器')
scheduler.pause() # 暂停调度器
time.sleep(3)
print('恢复调度器')
scheduler.resume() # 恢复调度器
time.sleep(3)
print('停止调度器')
scheduler.shutdown(wait=False) # 停止调度器,wait表示是否等待已经激活的任务完成再停止