- BlockingScheduler:main_loop就在当前进程的主线程内运行,所以调用start函数后会阻塞当前线程。通过一个threading.Event条件变量对象完成scheduler的定时唤醒。
- BackgroundScheduler:和BlockingScheduler基本一样,除了main_loop放在了单独线程里,所以调用start后主线程不会阻塞
1、interval 间隔调度(每隔多久执行)
2、date 定时调度(作业只会执行一次)
3、cron定时调度(某一定时时刻执行)
不多说,代码如下:
import threading
from apscheduler.schedulers.blocking import BlockingScheduler
def monitor_schedule():
from app.monitor.handle import MonitorManage
monitor = MonitorManage()
sched = BlockingScheduler()
# 任务会在每天的凌晨01:00,01分触发 可以添加kwargs={'args': args_key}传参
sched.add_job(monitor.data_handle, 'cron', day='*', hour=1, minute=1)
# sched.add_job(monitor.test, 'interval', minutes=1)
sched.start()
thread_task = threading.Thread(target=monitor_schedule)
thread_task.start()