1.APScheduler的简介:
- Advanced Python Scheduler(APScheduler)是一个Python库,可让您安排Python代码稍后执行,一次或定期执行。(定时任务工具)
- 官方文档
2.APScheduler的特点:
①不依赖于linux的crontab,独立运行。
②可以作为动态添加定时任务。
③可以将添加的任务持久化保存。
3.APScheduler的组件:
- 存储器(job stores)
- 任务存储是安排任务存储在哪里。默认存储只是将任务保留在内存中,但也可以将它们存储在各种类型的数据库中(例如sqlite,mysql,redis等)。
- 触发器(triggers)
- 可以理解为任务什么时候执行。每个任务都有自己的触发器。除了初始配置之外,触发器完全是无状态的。
- 执行器(executors)
- 任务执行人是处理任务的运行。他们通常是将任务提交给线程或进程池来完成此操作。任务完成后,执行程序会通知调度程序,调度程序随后会发出相应的事件。
- 调度器(schedulers)
- 任务调度者是将任务存储(job stores),任务执行人(executors)绑定在一起,起到管理定时任务的作用。通常只在应用程序中运行一个调度程序。应用程序开发人员通常不直接处理作业存储,执行程序或触发器,一般都是通过修改配置信息来实现。配置作业存储和执行程序是通过调度程序完成的,添加,修改和删除任务由调度者管理。
4.安装(pip安装)
pip install apscheduler
5.Python中操作各个组件
- 1.调度器(schedulers):
- BlockingScheduler
from apscheduler.schedulers.blocking import BlockingScheduler """ BlockingScheduler是阻塞模式,即运行到start()时,阻塞 """ scheduler = BlockingScheduler() scheduler.start()
- BackgroundScheduler
from apscheduler.schedulers.background import BackgroundScheduler """ BackgroundScheduler时后台运行模式,即运行到start()时,立即返回 """ scheduler = BackgroundScheduler() scheduler.start()
- BlockingScheduler
- 2.执行器(executors):
- ThreadPoolExecutor------(线程)
from apscheduler.executors.pool import ThreadPoolExecutor from apscheduler.schedulers.background import BackgroundScheduler ''' executor = ThreadPoolExecutor(max_workers=20) 线程池,最多20个线程同时执行 ''' executors = { 'default':ThreadPoolExecutor(max_workers=20) } scheduler = BackgroundScheduler(executors=executors) scheduler.start()
- ProcessPoolExecutor------(进程)
from apscheduler.executors.pool import ProcessPoolExecutor from apscheduler.schedulers.background import BackgroundScheduler ''' executor = ProcessPoolExecutor(max_workers=10) 进程池,最多10个进程同时执行 ''' executors = { 'default':ProcessPoolExecutor(max_workers=10) } scheduler = BackgroundScheduler(executors=executors) scheduler.start()
- ThreadPoolExecutor------(线程)
- 3.存储器(job stores):
- 不需要持久存储,可以存入内存中(MemoryJobStore)
from apscheduler.jobstores.memory import MemoryJobStore from apscheduler.schedulers.background
- 不需要持久存储,可以存入内存中(MemoryJobStore)