APScheduler 定时模块使用

APScheduler的全称是Advanced Python Scheduler。APScheduler能够让任务延时执行或定时执行,还可以根据需求随时添加或删除指定的任务。它还允许将任务存储在数据库中,不会因为程序异常而丢失任务。

安装命令如下:

pip install apscheduler

APScheduler 时间格式:

  • date:在某个特定时间仅执行一次,支持类UNIX系统中的Crontab时间格式
  • interval:以固定的时间间隔执行,时间单位支持秒、分、时、周等。
  • cron:在某个特定的时间执行,支持类UNIX系统中的Crontab时间格式。

APScheduler 四大组件分别是触发器,任务存储,执行器,调度器。

·触发器的作用是确定该何时执行任务。

·任务存储中存放的是任务属性,其中包括时间格式。它的默认存储是程序申请的内存空间,但允许开发者将其切换为支持MySQL的SQLAlchemy,或者将作业存储到MongoDB中,又或者将作业存储到Redis中。

·执行器负责执行任务,它会将作业存储中记录的可调用对象交给线程池或进程池执行。

·调度器使APScheduler适用于不同的框架。例如,AsyncIO模块下应该使用AsyncIOScheduler;Gevent框架中应该使用GeventScheduler;没有使用框架的Python程序应该使用BlockingScheduler。

简单使用实例:
在这里插入图片描述
由于并没有使用任何框架,所以代码导入的调度器是BlockingScheduler。初始化调度器后,调用add_job()方法设置一个时间间隔为2秒的任务,这里的任务指向show_time()方法。代码运行结果如下:
在这里插入图片描述
从运行结果得知,本次设定的时间间隔为2秒的任务被成功执行。这里指定的时间格式为interval,seconds代表时间单位为秒,如果将seconds改为minutes,就可以把时间单位换成分,其他时间单位可翻阅APScheduler文档的apscheduler.triggers.interval部分。

cron 格式的时间:
在这里插入图片描述
时间间隔为每天7点到22点之间,每2分钟的第10秒执行一次的任务。
运行结果:
在这里插入图片描述
从运行结果得知,本次设定的时间格式为cron的任务被成功执行。cron格式下的时间单位参数可翻阅APScheduler文档的apscheduler.triggers.cron部分。这里用Crontab相同的写法设定时间间隔为每天7点到22点,每2分钟的第10秒执行一次的任务:
在这里插入图片描述
特定的时间执行一次,使用时间格式date。将上面调用add_job()方法的语句改为:

sched.add_job(run, 'date', run_date=datetime.datetime(2020, 12, 4, 16, 27))  # 特定的时间执行一次 程序将会在2020年12月4日16时27分执行

在特定周期内运行和结束,提供了start_date和end_date,实例如下:

"""
任务将按照此配置在2020年12月4日至202年12月5日的每天7点到22点,每2分钟的第10秒执行一次。
"""
sched.add_job(run, 'cron', minute='*/2', second='10', hour='7-22', start_date='2020-12-4', end_date='2020-12-5')

结论:

我们可以根据不同的场景和需求选择不同的定时任务设置方式,如果要在程序中使用到类似Linux中的Crontab定时,那么APScheduler是一个很好的选择。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值