本文主要是介绍APScheduler 使用汇总,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
cronapscheduler 用于设置定时任务;
触发器(triggers)任务执行的调度逻辑,决定任务如何定时执行;
任务存储器(job stores)存储了调度任务;
执行器(executors)执行任务,含有线程池以及进程池的创建和调用等;
调度器(schedulers)组织调用其他方面;
安装:pip install apscheduler
调度器类型
BlockingScheduler: 阻塞式,适用于程序是进程中唯一运行的进程,调用 start函数会阻塞当前线程,不能立即返回。
BackgroundScheduler: 非阻塞式(后台运行),适用于调度程序在应用程序的后台运行,start后主线程不会阻塞。
AsyncIOScheduler: 当使用asyncio模块时使用
GeventScheduler: 当使用gevent模块时使用
TornadoScheduler: 构建Tornado应用时使用
TwistedScheduler: 构建Twisted应用时使用
QtScheduler: 构建Qt应用时使用
常用的是非阻塞式的BackgroundScheduler,通常定时任务都会在放到web服务中,如果使用阻塞式,则无法启动web服务。使用非阻塞式,定时任务设定后会继续执行后面的web服务,只要web服务在运行,定时任务就是一直有效的。
触发器类型
date:在某个时间点执行一次时使用
interval:固定的时间间隔循环执行时使用
cron:在特定的时间点执行时使用
calendarinterval:在特定时间点或以日历为基础的时间间隔内执行时使用
示例
import time from datetime import date from datetime import datetimefrom apscheduler.schedulers.background import BackgroundScheduler
# @sched.scheduled_job(trigger="interval", args=("张三", 100), seconds=3) 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()# 通过date 设置指定日期执行sched.add_job(do_func, trigger="date", run_date=date(2022, 5, 25), args=("张三", 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))# 每3秒执行一次sched.add_job(do_func, trigger="interval", args=("张三", 100), seconds=3)# 每3分钟执行一次sched.add_job(do_func, trigger="interval", args=("张三", 100), minutes=3)# 每3小时执行一次sched.add_job(do_func, trigger="interval", args=("张三", 100), hours=3)# 每3天执行一次sched.add_job(do_func, trigger="interval", args=("张三", 100), days=3)# 每3周执行一次sched.add_job(do_func, trigger="interval", args=("张三", 100), weeks=3)# 任务会在6月、7月、8月、11月和12月的第三个周五,00:00、01:00、02:00和03:00触发sched.add_job(do_func, trigger="cron", month='6-8,11-12', day='3rd fri', hour='0-3', 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)
参考:
APScheduler简介_apscheduler trigger-CSDN博客
Python----使用apscheduler模块设置定时任务_from apscheduler.schedulers.background import back-CSDN博客
这篇关于APScheduler 使用汇总的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!