当前位置:网站首页 > 更多 > 涨姿势 > 正文

[每日一学] Apscheduler时间调度程序——python定时任务

作者:CC下载站 日期:2020-08-07 00:00:00 浏览:48 分类:涨姿势

1.简介

APScheduler的全称是Advanced Python Scheduler。它是一个轻量级的 Python 定时任务调度框架。APScheduler 支持三种调度任务:固定时间间隔,固定时间点(日期),Linux 下的 Crontab 命令。同时,它还支持异步执行、后台执行调度任务。

2. 安装 pip install APScheduler

3. 基础组件

APScheduler 有四种组件,分别是:调度器(scheduler),作业存储(job store),触发器(trigger),执行器(executor)。

  • schedulers(调度器)
    它是任务调度器,属于控制器角色。它配置作业存储器和执行器可以在调度器中完成,例如添加、修改和移除作业。

  • triggers(触发器)
    描述调度任务被触发的条件。不过触发器完全是无状态的。

  • job stores(作业存储器)
    任务持久化仓库,默认保存任务在内存中,也可将任务保存都各种数据库中,任务中的数据序列化后保存到持久化数据库,从数据库加载后又反序列化。

  • executors(执行器)
    负责处理作业的运行,它们通常通过在作业中提交指定的可调用对象到一个线程或者进城池来进行。当作业完成时,执行器将会通知调度器。

"""
date触发器使用示例如下:
date触发器指在某一指定时间下执行脚本的方法
"""
fromdatetimeimportdatetime
fromdatetimeimportdate
fromapscheduler.schedulers.backgroundimportBackgroundScheduler

defjob_func(text):
print(text)

scheduler=BackgroundScheduler()
#在2017-12-13时刻运行一次job_func方法
scheduler.add_job(job_func,'date',run_date=date(2017,12,13),args=['text'])
#在2017-12-1314:00:00时刻运行一次job_func方法
scheduler.add_job(job_func,'date',run_date=datetime(2017,12,13,14,0,0),args=['text'])
#在2017-12-1314:00:01时刻运行一次job_func方法
scheduler.add_job(job_func,'date',run_date='2017-12-1314:00:01',args=['text'])

scheduler.start()
"""
interval触发器
循环执行脚本任务的触发器
weeks(int)–间隔几周
days(int)–间隔几天
hours(int)–间隔几小时
minutes(int)–间隔几分钟
seconds(int)–间隔多少秒
start_date(datetime|str)–开始日期
end_date(datetime|str)–结束日期
timezone(datetime.tzinfo|str)–时区
"""
importdatetime
fromapscheduler.schedulers.backgroundimportBackgroundScheduler

defjob_func(text):
print(datetime.datetime.utcnow().strftime("%Y-%m-%d%H:%M:%S.%f")[:-3])

scheduler=BackgroundScheduler()
#每隔两分钟执行一次job_func方法
scheduler.add_job(job_func,'interval',minutes=2)
#在2017-12-1314:00:01~2017-12-1314:00:10之间,每隔两分钟执行一次job_func方法
scheduler.add_job(job_func,'interval',minutes=2,start_date='2017-12-1314:00:01',end_date='2017-12-1314:00:10')

scheduler.start()
"""
cron触发器使用示例如下:
指定指定时间循环执行脚本的触发器
year(int|str)–年,4位数字
month(int|str)–月(范围1-12)
day(int|str)–日(范围1-31)
week(int|str)–周(范围1-53)
day_of_week(int|str)–周内第几天或者星期几(范围0-6或者mon,tue,wed,thu,fri,sat,sun)
hour(int|str)–时(范围0-23)
minute(int|str)–分(范围0-59)
second(int|str)–秒(范围0-59)
start_date(datetime|str)–最早开始日期(包含)
end_date(datetime|str)–最晚结束时间(包含)
timezone(datetime.tzinfo|str)–指定时区
"""
importdatetime
fromapscheduler.schedulers.backgroundimportBackgroundScheduler

defjob_func(text):
print("当前时间:",datetime.datetime.utcnow().strftime("%Y-%m-%d%H:%M:%S.%f")[:-3])

scheduler=BackgroundScheduler()
#在每年1-3、7-9月份中的每个星期一、二中的00:00,01:00,02:00和03:00执行job_func任务
scheduler.add_job(job_func,'cron',month='1-3,7-9',day='0,tue',hour='0-3')

scheduler.start()

参考链接:https://www.cnblogs.com/luxiaojun/p/6567132.html
参考链接:https://www.cnblogs.com/ohyb/p/9084011.html
参考链接:https://www.cnblogs.com/cool-fire/p/7449758.html
参考链接:http://www.cnblogs.com/luxiaojun/p/6567132.html


官方文档:https://apscheduler.readthedocs.io/en/latest/userguide.html#basic-concepts


您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯