Python apscheduler,
本文主要介绍了Python使用apscheduler模块设置预定任务的实现。通过实例代码详细介绍,具有一定的参考价值。感兴趣的朋友可以参考一下。
00-1010 1.安装2。ApScheduler 1简介。AP调度程序2的组件。调度程序的类型3。内置触发器的类型。使用示例1。使用日期类型触发器2。使用间隔类型触发器3。使用cron类型触发器4。为计时器使用装饰器。
目录
pip安装时间表
一、安装
二、ApScheduler 简介
触发器:触发器
触发器包含任务执行的调度逻辑,它决定任务被调度执行什么逻辑。
工作商店;任务记忆
存储调度任务
遗嘱执行人
用例执行任务,包括线程池和进程池的创建和调用等。
调度程序:调度程序
属于控制面,组织其他几个方面的作用,
1 APScheduler的组件
常见的调度器有几种类型,其中最常用的BackgroundScheduler是非阻塞的,因为在正常情况下,被调度的任务会被放到web服务中。如果使用阻塞类型,则无法启动web服务。如果使用非阻塞类型,将设置计划任务,并且将继续执行以下web服务。只要web服务正在运行,计划的任务将始终有效。
阻塞Scheduler:阻塞后台Scheduler:非阻塞(后台运行)AsyncIOScheduler:使用asyncio模块时使用geventScheduler:使用Gevent模块时使用Tornado scheduler : twisted scheduler :用于Tornado应用程序,QtScheduler:用于Qt应用程序
2 调度器的种类
Date:在特定时间点执行一次时使用interval:cycle execution在一天中的特定时间点执行时使用cron:calendarinterval:在一天中的特定时间点或基于日历的时间间隔执行。
3 内置的触发器类型
这里,jiu以非阻塞的BackgroundScheduler为例。
三、使用举例
如下,使用了三种设置日期和时间的方法。
从apscheduler . schedulers . background导入背景计划程序
导入时间
从日期时间导入日期
从日期时间导入日期时间
def do_func(姓名,年龄):
print(time . strftime( % y-% m-% d % h :% m :% s ,time . local time(time . time())) in do func 3360 name: name Age: str(Age))
定义主():
print(time . strftime( % Y-% m-% d % h :% m :% S ,time.localtime(time.time())))
sched=BackgroundScheduler()
#通过设置日期在指定日期执行
sched.add_job(do_func,trigger=date ,run_date=date(2022,5,25),参数
=("张三丰",100))
# 通过datetime,设置指定日期额指定时刻执行
sched.add_job(do_func, trigger="date", run_date=datetime(2022, 5, 25,14,0,10), args=("张三丰", 100))
# 直接使用文本的方式指定日期和时刻表
sched.add_job(do_func, trigger="date", run_date="2022-05-25 14:0:20", args=("张三丰", 100))
sched.start()
if __name__=="__main__":
main()
while True:
print(time.strftime(%Y-%m-%d %H:%M:%S, time.localtime(time.time())))
time.sleep(1)
执行结果如下,可以发现,第一个通过date指定日期的默认是0点执行,显然时间已经过了,不会执行,第二和第三个则在规定的时间点执行了,这里还需要注意的是,通过打印可以看出,main函数执行完成后,已经开始执行main函数下面的while循环打印语句了,而在执行循环的过程中,定时任务仍然生效,这就是非阻塞式调度器的原理,如果是阻塞式,则在此代码中,会一直卡在main函数中,main下面额while循环语句是不会执行的,因此在实际使用中,非阻塞式应用的是非常多的
2022-05-25 14:00:02
2022-05-25 14:00:02
C:Usershitre.virtualenvszentaolinkgitlab-QCS5yxD9libsite-packagesapschedulerutil.py:436: PytzUsageWarning: The localize method is no longer necessary, as this time zone supports the fold attribute (PEP 495). For more details on migrating to a PEP 495-compliant implementation, see https://pytz-deprecation-shim.readthedocs.io/en/latest/migration.html
return tzinfo.localize(dt)
Run time of job "do_func (trigger: date[2022-05-25 00:00:00 CST], next run at: 2022-05-25 00:00:00 CST)" was missed by 14:00:02.088260
2022-05-25 14:00:03
2022-05-25 14:00:04
2022-05-25 14:00:05
2022-05-25 14:00:06
2022-05-25 14:00:07
2022-05-25 14:00:08
2022-05-25 14:00:09
2022-05-25 14:00:10 in do func : 姓名:张三丰 年龄:100
2022-05-25 14:00:10
2022-05-25 14:00:11
2022-05-25 14:00:12
2022-05-25 14:00:13
2022-05-25 14:00:14
2022-05-25 14:00:15
2022-05-25 14:00:16
2022-05-25 14:00:17
2022-05-25 14:00:18
2022-05-25 14:00:19
2022-05-25 14:00:20 in do func : 姓名:张三丰 年龄:100
2022-05-25 14:00:20
2022-05-25 14:00:21
2022-05-25 14:00:22
2 使用interval类型的触发器
如下代码演示了时间间隔循环执行的使用例子
from apscheduler.schedulers.background import BackgroundScheduler
上面的代码中因为时间跨度比较大,这里只演示妹3秒执行一次的代码
代码如下:
from apscheduler.schedulers.background import BackgroundScheduler
执行结果如下:
2022-05-25 14:14:04
2022-05-25 14:14:04
2022-05-25 14:14:05
2022-05-25 14:14:06
2022-05-25 14:14:07 in do func : 姓名:张三丰 年龄:100
2022-05-25 14:14:07
2022-05-25 14:14:08
2022-05-25 14:14:09
2022-05-25 14:14:10 in do func : 姓名:张三丰 年龄:100
2022-05-25 14:14:10
2022-05-25 14:14:11
2022-05-25 14:14:12
2022-05-25 14:14:13 in do func : 姓名:张三丰 年龄:100
2022-05-25 14:14:13
3 使用cron类型的触发器
cron的触发器有点类似linux上crontab定时器的使用,代码如下:
from apscheduler.schedulers.background import BackgroundScheduler
这里需要注意的是,可以省略不需要的字段。当省略时间参数时,在显式指定参数之前的参数会被设定为*,之后的参数会被设定为最小值,week 和day_of_week的最小值为*
day=1, minute=20
此外,也可以直接使用crontab表达式,如下:
from apscheduler.schedulers.background import BackgroundScheduler
四、定时器使用装饰器的方法
以间隔时间循环执行的代码为例,如下为未使用装饰器的方式
from apscheduler.schedulers.background import BackgroundScheduler
修改为使用装饰器的方式如下:
from apscheduler.schedulers.background import BackgroundScheduler
执行结果如下:
2022-05-25 14:34:10
2022-05-25 14:34:11
2022-05-25 14:34:12
2022-05-25 14:34:13 in do func : 姓名:张三丰 年龄:100
2022-05-25 14:34:13
2022-05-25 14:34:14
2022-05-25 14:34:15
2022-05-25 14:34:16 in do func : 姓名:张三丰 年龄:100
2022-05-25 14:34:16
2022-05-25 14:34:17
2022-05-25 14:34:18
2022-05-25 14:34:19 in do func : 姓名:张三丰 年龄:100
2022-05-25 14:34:19
2022-05-25 14:34:20
到此这篇关于Python使用apscheduler模块设置定时任务的实现的文章就介绍到这了,更多相关Python apscheduler定时任务内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。