栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python定时任务apscheduler学习笔记(一)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python定时任务apscheduler学习笔记(一)

apscheduler 是什么?

APScheduler基于Quartz的一个Python定时任务框架,实现了Quartz的所有功能,使用起来十分方便。提供了基于日期、固定时间间隔以及crontab类型的任务,并且可以持久化任务。apscheduler 可以当作一个跨平台的调度工具来使用,可以做为 linux 系统crontab 工具或 windows 计划任务程序的替换。注意,apscheduler 不是一个守护进程或服务,它自身不带有任何命令行工具。它主要是要在现有的应用程序中运行,也就是说,apscheduler 为我们提供了构建专用调度器或调度服务的基础模块。

如何安装?
pin install apscheduler
基本概念

触发器(triggers):触发器包含调度逻辑,描述一个任务何时被触发,按日期或按时间间隔或按 cronjob 表达式三种方式触发。每个作业都有它自己的触发器,除了初始配置之外,触发器是完全无状态的。

作业存储器(job stores):作业存储器指定了作业被存放的位置,默认情况下作业保存在内存,也可将作业保存在各种数据库中,当作业被存放在数据库中时,它会被序列化,当被重新加载时会反序列化。作业存储器充当保存、加载、更新和查找作业的中间商。在调度器之间不能共享作业存储。

执行器(executors):执行器是将指定的作业(调用函数)提交到线程池或进程池中运行,当任务完成时,执行器通知调度器触发相应的事件。

调度器(schedulers):任务调度器,属于控制角色,通过它配置作业存储器、执行器和触发器,添加、修改和删除任务。调度器协调触发器、作业存储器、执行器的运行,通常只有一个调度程序运行在应用程序中,开发人员通常不需要直接处理作业存储器、执行器或触发器,配置作业存储器和执行器是通过调度器来完成的。

如何使用
#BlockingScheduler定时任务
from apscheduler.schedulers.blocking import BlockingScheduler
from datetime import datetime

# 输出时间
def job():
    print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))

# 实例化一个BlockingScheduler类(调度器),不带参数使用默认的作业存储器-内存最大并发线程10
scheduler = BlockingScheduler()
'''
触发器包含:corn(固定时间间隔),interval(固定时间间隔触发),date(特定时间点)
'''
#job是要调度的作业程序,这里标识周一到周五的14点每分钟执行一次
scheduler.add_job(job, "cron", day_of_week="1-5", hour=14, minute='*')
scheduler.start()
cron触发器
参数说明
year年,4位数
month月1-12
day日1-31
week周1-53
day_of_week周内第几天或者星期几(0-6或者mon,tue,wed,thu,fri,sat,sum)

hour

时0-23
minute分0-59
second秒0-59
start_date开始日期
end_date结束日期
timezone指定时区
scheduler.add_job(job, 'cron', hour=1, minute=5)
# hour =19 , minute =23   这里表示每天的19:23 分执行任务
# hour ='19', minute ='23'   这里可以填写数字,也可以填写字符串
# hour ='19-21', minute= '23'   表示 19:23、 20:23、 21:23 各执行一次任务
# hour ='14', minute = '*'   表示14点每分钟触发一次

#在1月,3月,5月,7-9月,每天的下午2点,每一分钟执行一次任务
scheduler .add_job(func=job, trigger='cron', month='1,3,5,7-9', day='*', hour='14', minute='*')

# 当前任务会在 6、7、8、11、12 月的第三个周五的 0、1、2、3 点执行
scheduler .add_job(job, 'cron', month='6-8,11-12', day='3rd fri', hour='0-3')
interval触发器
参数说明
weeks间隔几周
days间隔几天
hours间隔几小时
minutes间隔几分钟
seconds间隔几秒
start_date开始日期
end_date结束日期
timezone时区
#每300秒执行一次
scheduler .add_job(job, 'interval', seconds=300)

#从开始时间到结束时间,每隔俩小时运行一次
scheduler .add_job(job, 'interval', hours=2, start_date='2018-01-10 09:30:00', end_date='2018-06-15 11:00:00')
date触发器

指定时间触发,作业任务只会执行一次。

参数run_date作业运行日期或者时间,timezone指定时区

学习链接:

https://blog.csdn.net/somezz/article/details/83104368,https://blog.csdn.net/h18208975507/article/details/108797671

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/276186.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号