本文主要介绍了Python使用apscheduler模块设置定时任务的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
一、安装
pip install apscheduler
二、ApScheduler 简介
1 APScheduler的组件
triggers:触发器
triggers包含任务执行的调度逻辑,决定任务按照什么逻辑进行定时执行
job stores;任务存储器
存储了调度任务
executors:执行器
用例执行任务的,包含线程池以及进程池等的创建和调用等等
schedulers:调度器
属于控制面,将其他几个方面组织起来的作用、
2 调度器的种类
调度器有以下几种常见类型,其中最常用的BackgroundScheduler,即非阻塞式,因为在一般情况下,定时任务都会在放到web服务中,如果使用阻塞式,则无法启动web服务,而使用非阻塞式,则将定时任务设定后,就不管了,继续执行后面的web服务,只要web服务在运行,定时任务就是一直有效的
-
BlockingScheduler: 阻塞式
-
BackgroundScheduler: 非阻塞式(后台运行)
-
AsyncIOScheduler: 当使用asyncio模块时使用
-
GeventScheduler: 当使用gevent模块时使用
-
TornadoScheduler: 构建Tornado应用时使用
-
TwistedScheduler: 构建Twisted应用时使用
-
QtScheduler: 构建Qt应用时使用
3 内置的触发器类型
-
date: 在某个时间点执行一次时使用
-
interval: 固定的时间间隔循环执行时使用
-
cron: 在一天中特定的时间点执行时使用
-
calendarinterval: 当想在在一天中特定时间点或以日历为基础的时间间隔内执行时使用
三、使用举例
这里就以非阻塞式BackgroundScheduler调度器为例展开
1 使用date类型的触发器
如下,使用了三种设置日期和时间的方法
from apscheduler.schedulers.background import BackgroundScheduler
import time
from datetime import date
from datetime import datetime
def do_func(name,age):
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+" in do func : 姓名:"+name+" 年龄:"+str(age))
def main():
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))
sched=BackgroundScheduler()