python定时任务的实现方法
使用apscheduler,
参考:
https://www.jianshu.com/p/b77d934cc252
https://www.jianshu.com/p/ad2c42245906
from apscheduler.schedulers.blocking import BlockingScheduler
# BlockingScheduler:在进程中运行单个任务,
# 调度器是唯一运行的东西
# 1.创建scheduler调度
scheduler = BlockingScheduler()
# 采用阻塞的方式
# 2.添加调度任务【关键】
scheduler.add_job(jobs,trigger)
# 3.运行调度
scheduler.start()
apscheduler基础组件:调度器(scheduler)、触发器(tigger)、作业存储(job store)、执行器(executor)
- 调度器:任务调度,添加、修改、删除作业
- BlockingScheduler : 调度器在当前进程的主线程中运行,也就是会阻塞当前线程,适用于单个任务。
- BackgroundScheduler : 调度器在后台线程中运行,不会阻塞当前线程。
- AsyncIOScheduler : 结合 asyncio 模块(一个异步框架)一起使用。
- GeventScheduler : 程序中使用 gevent(高性能的Python并发框架)作为IO模型,和 GeventExecutor 配合使用。
- TornadoScheduler : 程序中使用 Tornado(一个web框架)的IO模型,用 ioloop.add_timeout 完成定时唤醒。
- TwistedScheduler : 配合 TwistedExecutor,用 reactor.callLater 完成定时唤醒。
- QtScheduler : 你的应用是一个 Qt 应用,需使用QTimer完成定时唤醒。
- 【关键设置】触发器:调度任务被触发,不触发触发没有操作
-
data 触发器,作业任务只执行一次,运行完毕自动清除;若错过指定运行时间,任务不会被创建。
参数:
run_date (datetime 或 str):作业的运行日期或时间
timezone (datetime.tzinfo 或 str):指定时区
# 1.run-data为str,在2019-12-09 00 运行jbos
scheduler.add_job(jobs,'date',run_data='2019-12-09 00:00:00',args=['text'])
# 2.run_data为datatime,在 2019-12-09 00:00:00 时刻运行一次 jobs 方法
scheduler.add_job(jobs, 'date', run_date=datetime(2019, 12, 9, 0, 0, 0), args=['text'])
# 3.run_data 为data, 在2019-12-9 运行一次jobs
scheduler.add_job(jobs, 'date', run_date=date(