python ApScheduler(定时任务模块)使用

模块功能

定时任务

1.单次定时任务(在某个时刻运行一次)

2.循环定时任务(①固定间隔运行,如每隔1小时②某个时间条件运行,如每天5点)

一、模块导入及定时任务函数编写

# 非阻塞模式
# 此模式定时任务之后的代码会正常运行
from apscheduler.schedulers.background import BackgroundScheduler


# 阻塞模式
# 此模式下,定时任务未完成前,后面的代码不会运行(一般此模式仅在单次定时任务时用)
from apscheduler.schedulers.background import BlockingScheduler

# 定义一个用于定时任务的函数
# 此处简单写个用于输出传入的字符串功能,下文均以此示例函数演示
def my_job(str):
    pring(str)


二、模块使用

1.单次定时任务(阻塞模式)

sched = BlockingScheduler()
sched.add_job(my_job, trigger="date", run_date="2023-05-19 11:03:10", args=("哈哈哈",))
sched.start()

第一行实例化定时任务对象,模式为阻塞式

第二行添加定时任务,"my_job"指定用于定时任务的函数,不要带括号;"run_date"用于指定任务运行时间,"args"用于指定传给函数的参数,元组类型

第三行启动定时任务

阻塞模式下,在定时任务运行完成前,之后的代码均不会运行。

2.单次定时任务(非阻塞模式)

sched = BackgroundScheduler()
sched.add_job(my_job, trigger="date", run_date="2023-05-19 11:03:10", args=("哈哈哈",))
sched.start()
time.sleep(30)

第一行实例化定时任务对象,模式为非阻塞式

第二行添加定时任务,"my_job"指定用于定时任务的函数,不要带括号;"run_date"用于指定任务运行时间,"args"用于指定传给函数的参数,元组类型

第三行启动定时任务

第四行等待30秒。因为非阻塞模式下,定时任务部分代码会放入后台(或者其他线程运行),后面的代码会紧跟着运行,需要保证主线程在定时任务运行完之前未结束运行。这里用了最简单的等待方式,正式程序,要么后面有其他的代码,要么会用条件循环通过判断任务列表是否为空进行处理。

3.固定间隔循环任务(非阻塞模式)

sched = BackgroundScheduler()
sched.add_job(my_job, trigger="interval", hours=1, args=("哈哈哈",), start_date="2023-05-19 11:03:10", end_date="2023-05-20 11:03:10")
sched.start()
jobs = sched.get_jobs()
while len(jobs) > 0:
    jobs = sched.get_jobs()
else:
    pass

第一行实例化定时任务对象,模式为非阻塞式

第二行添加定时任务,"my_job"指定用于定时任务的函数,不要带括号;hour=1部分用于描述间隔,可用间隔有(weeks,隔几周;days,隔几天;hours,隔几小时;minutes,隔几分钟;senconds,隔几秒);start_date、end_date用于指定开始和结束定时任务的时间范围

第三行启动定时任务

第四行到结束用于保证定时任务运行完之前主线程不结束。通过get_jobs方式获取还在运行的任务数量(未运行完成的都处于还在运行状态,单次运行的任务运行1次后会结束运行状态,循环任务在超过运行时间后也会结束运行状态),判断是否定时任务是否运行结束。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值