python小知识-APScheduler定时任务

1.基本概念

不管你使用哪种APScheduler的定时任务,你都需要先了解APScheduler的简单机制。即:job、executors、jobstores、trigger、scheduler等

1.job
	即需要被执行的具体任务,主要对应Python中的函数或方法。在APScheduler中即可以装饰器的方式添加,也可以动态添加job。

2.executors
	即执行job的对象。通常可以是多线程、多进程、协程等对象。

3.	jobstores
即存储job元数据的地方。可以是memory、sqllite、mysql等。

4.trigger
	即决定任务的触发模式
	4.1date :固定日期触发器:任务只运行一次,运行完毕自动清除;若错过指定运行时间,任务不会被创建
	4.2interval: 时间间隔触发器
	4.3cron : 指定日期时间周期性触发 (详细说明往下看)
5.scheduler
	用于调度和管理上述提到的所有对象。
	5.1BlockingScheduler 阻塞定时任务执行器
	5.2BackgroundScheduler 后台定时任务执行器

2.以装饰器方式添加时阻塞方式的时间间隔任务

from apscheduler.schedulers.blocking import BlockingScheduler
 
sched = BlockingScheduler()  #  实例化一个阻塞任务的对象
  
@sched.scheduled_job('interval', seconds=5)     # 以装饰器方式添加定时任务,以5s为间隔来触发
def my_job():
    pass
    
sched.start()  # 启动任务

3.动态添加指定日期的后台任务

from apscheduler.schedulers.blocking import BlockingScheduler
 
 # 任务函数
def my_job():
    pass
 
sched = BlockingScheduler() # 实例化一个后台任务对象

# 在11,12月份的第三个星期五的00:00,01:00,02:00,03:00触发
sched.add_job(my_job, 'cron', month='11-12', day='3rd fri', hour='0-3')   # 添加任务

sched.start()  # 开始任务

4.trigger触发器参数详解

1. date :固定日期触发器:任务只运行一次,常用参数:
	1.1 run_date (datetime 或 str)	作业的运行日期或时间
	1.2 timezone (datetime.tzinfo 或 str)	指定时区
	
2. interval: 时间间隔触发器,常用参数
	2.1  weeks (int)	间隔几周
	2,2  days (int)	间隔几天
	2.3  hours (int)	间隔几小时
	2.4  minutes (int)	间隔几分钟
    2.5  seconds (int)	间隔多少秒
    2.6  start_date (datetime 或 str)	开始日期
    2.7  end_date (datetime 或 str)	结束日期
	2.8  timezone (datetime.tzinfo 或str)	时区

3. cron : 指定日期时间周期性触发
	3.1 year (intstr)	年,4位数字
	3.2 month (intstr)(范围1-12)
	3.3 day (intstr)(范围1-31
	3.4 week (intstr)(范围1-53)
	3.5 day_of_week (intstr)	周内第几天或者星期几 (范围0-6 或者 mon,tue,wed,thu,fri,sat,sun)
	3.6 hour (intstr)(范围0-23)
	3.7 minute (intstr)(范围0-59)
	3.8 second (intstr)(范围0-59)
	3.9 start_date (datetime 或 str)	最早开始日期(包含)
	3.10 end_date (datetime 或 str)	最晚结束时间(包含)
	3.11 timezone (datetime.tzinfo 或str)	指定时区

参考博客

https://blog.csdn.net/five3/article/details/89500049
https://blog.csdn.net/caiguoxiong0101/article/details/50364236
https://blog.csdn.net/xc_zhou/article/details/80952147

你可能感兴趣的:(python)