python脚本调度程序_Apscheduler时间调度程序——python定时任务

1.简介

APScheduler的全称是Advanced Python Scheduler。它是一个轻量级的 python 定时任务调度框架。APScheduler 支持三种调度任务:固定时间间隔,固定时间点(日期),linux 下的 Crontab 命令。同时,它还支持异步执行、后台执行调度任务。

2. 安装   pip install APScheduler

3. 基础组件APScheduler 有四种组件,分别是:调度器(scheduler),作业存储(job store),触发器(trigger),执行器(executor)。schedulers(调度器)

它是任务调度器,属于控制器角色。它配置作业存储器和执行器可以在调度器中完成,例如添加、修改和移除作业。

triggers(触发器)

描述调度任务被触发的条件。不过触发器完全是无状态的。

job stores(作业存储器)

任务持久化仓库,默认保存任务在内存中,也可将任务保存都各种数据库中,任务中的数据序列化后保存到持久化数据库,从数据库加载后又反序列化。

executors(执行器)

负责处理作业的运行,它们通常通过在作业中提交指定的可调用对象到一个线程或者进城池来进行。当作业完成时,执行器将会通知调度器。"""

date 触发器使用示例如下:

date 触发器指在某一指定时间下执行脚本的方法

"""

from datetime import datetime

from datetime import date

from apscheduler.schedulers.background import BackgroundScheduler

def job_func(text):

print(text)

scheduler = BackgroundScheduler()

# 在 2017-12-13 时刻运行一次 job_func 方法

scheduler .add_job(job_func, 'date', run_date=date(2017, 12, 13), args=['text'])

# 在 2017-12-13 14:00:00 时刻运行一次 job_func 方法

scheduler .add_job(job_func, 'date', run_date=datetime(2017, 12, 13, 14, 0, 0), args=['text'])

# 在 2017-12-13 14:00:01 时刻运行一次 job_func 方法

scheduler .add_job(job_func, 'date', run_date='2017-12-13 14:00:01', args=['text'])

scheduler.start()"""

interval 触发器

循环执行脚本任务的触发器

weeks (int) – 间隔几周

days (int) – 间隔几天

hours (int) – 间隔几小时

minutes (int) – 间隔几分钟

seconds (int) – 间隔多少秒

start_date (datetime|str) – 开始日期

end_date (datetime|str) – 结束日期

timezone (datetime.tzinfo|str) – 时区

"""

import datetime

from apscheduler.schedulers.background import BackgroundScheduler

def job_func(text):

print(datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S.%f")[:-3])

scheduler = BackgroundScheduler()

# 每隔两分钟执行一次 job_func 方法

scheduler .add_job(job_func, 'interval', minutes=2)

# 在 2017-12-13 14:00:01 ~ 2017-12-13 14:00:10 之间, 每隔两分钟执行一次 job_func 方法

scheduler .add_job(job_func, 'interval', minutes=2, start_date='2017-12-13 14:00:01' , end_date='2017-12-13 14:00:10')

scheduler.start()"""

cron 触发器使用示例如下:

指定指定时间循环执行脚本的触发器

year (int|str) – 年,4位数字

month (int|str) – 月 (范围1-12)

day (int|str) – 日 (范围1-31)

week (int|str) – 周 (范围1-53)

day_of_week (int|str) – 周内第几天或者星期几 (范围0-6 或者 mon,tue,wed,thu,fri,sat,sun)

hour (int|str) – 时 (范围0-23)

minute (int|str) – 分 (范围0-59)

second (int|str) – 秒 (范围0-59)

start_date (datetime|str) – 最早开始日期(包含)

end_date (datetime|str) – 最晚结束时间(包含)

timezone (datetime.tzinfo|str) – 指定时区

"""

import datetime

from apscheduler.schedulers.background import BackgroundScheduler

def job_func(text):

print("当前时间:", datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S.%f")[:-3])

scheduler = BackgroundScheduler()

# 在每年 1-3、7-9 月份中的每个星期一、二中的 00:00, 01:00, 02:00 和 03:00 执行 job_func 任务

scheduler .add_job(job_func, 'cron', month='1-3,7-9',day='0, tue', hour='0-3')

scheduler.start()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值