目录
一、安装
二、定时调度类型
2.1、BackgroundScheduler非阻塞调度器
2.2、BlockingScheduler阻塞调度器
2.3、调度任务触发
三、 其他
一、安装
pip install apscheduler
二、定时调度类型
2.1、BackgroundScheduler非阻塞调度器
启动的任务会被转为后台自动运行,不阻塞主流程的运行。
import datetime
from apscheduler.schedulers.background import BackgroundScheduler
import os# 初始化阻塞调度器
sched = BackgroundScheduler()def task():print('csv2dat start at',datetime.datetime.now())os.system('python /xxx/xxx/runCsv2dat.py')'''interval 设置调度间隔date 指定调度时间cron 设置cron表达式,控制调度,cron表达式可参考: https://blog.csdn.net/zkkkkkkkkkkkkk/article/details/133743909?spm=1001.2014.3001.5501
'''
# sched.add_job(task,'interval',minutes=1,max_instances=10)
# sched.add_job(task,'date','2024-01-01 00:00:00')
sched.add_job(task,'cron',hour=1,minute=0)# 启动调度
sched.start()
2.2、BlockingScheduler阻塞调度器
反之,调度任务与主任务串行,只有在调度任务完成后,主流程才会往下走。
import datetime
from apscheduler.schedulers.blocking import BlockingScheduler
import os# 初始化阻塞调度器
sched = BlockingScheduler()def task():print('csv2dat start at',datetime.datetime.now())os.system('python /xxx/xxx/runCsv2dat.py')'''interval 设置调度间隔date 指定调度时间cron 设置cron表达式,控制调度,cron表达式可参考: https://blog.csdn.net/zkkkkkkkkkkkkk/article/details/133743909?spm=1001.2014.3001.5501
'''
# sched.add_job(task,'interval',minutes=1,max_instances=10)
# sched.add_job(task,'date','2024-01-01 00:00:00')
sched.add_job(task,'cron',hour=1,minute=0)# 启动调度
sched.start()
2.3、调度任务触发
sched.add_job(job,trigger,*args,**keyword)
其中,添加调度任务为使用add_job函数,其中trigger有三种触发器。参数分别为:interval、date、cron
interval:按时间调度,每周、每天、每小时、每分钟、每秒
date:特定时间调度,列如:'2024-01-01 01:00:00',代表在2024年1月1日凌晨1点运行一次。
cron:同linux下的crontab设置一致,包含年月日时分秒等参数。详情参考:Linux下crontab表达式
三、 其他
apscheduler还有其他强大的功能,如任务存储器、任务执行器。目前还未了解透彻,也就不写了。网上有很多介绍的文章写的很不错。此外,web开发中也有apscheduler的身影,django的django_apscheduler、flask的flask-apscheduler都是基于apscheduler做的二次开发。